попробуй заблокировать в винде - PullRequest
2 голосов
/ 01 августа 2011

в библиотеке pthread можно найти неблокирующую функцию:

int pthread_mutex_trylock(pthread_mutex_t *mutex);

можно ли найти что-то похожее в Windows?

Ответы [ 2 ]

4 голосов
/ 01 августа 2011

Если вы используете критическую секцию для своей блокировки, то эквивалент будет TryEnterCriticalSection().

Если вы используете мьютекс для блокировки, то эквивалентно будет вызывать WaitForSingleObject(), передавая 0 в качестве таймаута.

Если вы не знакомы с объектами синхронизации Windows, не обманывайте себя, предпочитая мьютекс, потому что у него есть имя, с которым вы больше всего знакомы из фона pthreads. Пока ваша синхронизация находится в процессе, критические секции более эффективны и просты в использовании.

0 голосов
/ 01 августа 2011

Вы можете проверить библиотеку Boost. У них есть то, что называется shareable_locks .
Это часть Boost Interprocess Library , которая работает как в Windows, так и в Unix.

...