mtx_trylock函数
概要:
#include <threads.h> int mtx_trylock(mtx_t *mtx);
描述:
该函数试图加锁参数mtx指向的互斥。如果参数mtx指向的互斥已经被加锁,函数返回,并且不会阻塞调用线程。如果成功加锁互斥,对于同一互斥先前mtx_unlock函数的调用与该函数的操作同步。
参数:
mtx_t *mtx
指向将被加锁的互斥的指针。
返回值:
如果成功加锁互斥,函数返回thrd_success;如果请求的资源已经在使用,函数返回thrd_busy;如果请求无法得到满足,函数返回thrd_error。加锁未使用资源时mtx_trylock函数可能会出现伪失败(spuriously fail),这种情况下函数返回thrd_busy。
范例:
|
|
输出:
The resource requested is already in use.
注:使用Pelles C编译。
在这个例子中创建了两个新线程,通过thrd_sleep(&(struct timespec){*((int *)arg), 0}, NULL);语句使第一个线程暂停5秒;第二个线程加锁互斥,当第一个线程中mtx_trylock函数尝试加锁互斥时,函数返回thrd_busy。
相关内容:
mtx_lock | 加锁互斥的函数。 |
mtx_timedlock | 支持超时加锁互斥的函数。 |
mtx_destroy | 销毁互斥的函数。 |
mtx_init | 创建互斥的函数。 |
mtx_unlock | 解锁互斥的函数。 |