我正在写一个包含几个关键部分的程序。问题是我需要检查if语句中互斥对象的值。
我想做这样的事情:
if pthread_mutex(&mutex) == 0 // locked
// Do something
else if pthread_mutex(&mutex) == 1 // unlocked
// Do something else
这可能吗?
我正在写一个包含几个关键部分的程序。问题是我需要检查if语句中互斥对象的值。
我想做这样的事情:
if pthread_mutex(&mutex) == 0 // locked
// Do something
else if pthread_mutex(&mutex) == 1 // unlocked
// Do something else
这可能吗?
从该链接:
The pthread_mutex_trylock() function shall be equivalent to pthread_mutex_lock(), except that if the mutex object referenced by mutex is currently locked (by any thread, including the current thread), the call shall return immediately. ... Return values ... The pthread_mutex_trylock() function shall return zero if a lock on the mutex object referenced by mutex is acquired. Otherwise, an error number is returned to indicate the error
因此,您的代码如下所示:
pthread_mutex_t *m = /* ... */;
if (pthread_mutex_trylock(m) == 0)
{
/* Success! This thread now owns the lock. */
}
else
{
/* Fail! This thread doesn t own the lock. Do something else... */
}
不,你不应该那样做。我认为,pthread互斥是为了规范对某些关键资源的本地访问,如果在某个地方你的程序不知道这个实际线程是否持有锁,那么你使用了错误的工具。我看到了两种选择:
sem_t
as control DS. they
don t have this restriction of being
glued to a specific thread that
"holds" them, but are token based, so
any thread that obtains the token may
do the work that is required. (but be careful and check the return value of the functions these routines may be interrupted.)如果你想知道你的互斥是否已经被锁定,我建议你使用pthread_mutex_trylock
。请记住,锁定互斥是一项繁重的操作,不应该仅仅为了测试它是否不是。
For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...
最好、最小、最快、开放的来源、C/C++ 3d 提供方(在3ds max模型的支持下),而不是通用公平市价,
Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...
I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...
I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...
I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...
Is there anything other than DDD that will draw diagrams of my data structures like DDD does that runs on Linux? ddd is okay and runs, just kind of has an old klunky feeling to it, just wanted to ...
Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...