2
A
回答
4
如果您使用的是锁的关键部分,则相当于TryEnterCriticalSection()
。
如果您正在使用互斥锁进行锁定,则相当于调用WaitForSingleObject()
,并将0
作为超时值。
如果您不熟悉Windows同步对象,请不要因为它拥有您最熟悉的pthreads背景名称而更喜欢互斥体。只要您的同步处于流程中,关键部分的效率更高,更易于使用。
-1
您可以检查Boost库。他们有一些叫做shareable_locks的东西。
这是Boost Interprocess Library的一部分,它既适用于Windows,也适用于Unix。
相关问题
- 1. 在Windows上尝试Tesseract CMD
- 2. 尝试嵌入的Perl用C在Windows
- 3. 尝试 - 多线程 - 在VB.net Windows窗体
- 4. 错误尝试使用svn2git在Windows
- 5. 尝试在Windows上编译时出错
- 6. 了错误,当我尝试在Windows-XP
- 7. 尝试资源不在尝试块
- 8. 尝试虚拟盒使用Windows 7的
- 9. 每个注册的Windows登录尝试
- 10. Windows Azure应用程序 - 黑客尝试?
- 11. 有没有办法尝试Windows Azure?
- 12. 尝试在ListView
- 13. 尝试在SUSE
- 14. 尝试在python
- 15. 尝试在iPhone
- 16. 尝试在VBA
- 17. 尝试在JSON
- 18. 尝试在Cast.writetoParcel
- 19. 我尝试在SQL
- 20. 尝试在TableView中
- 21. 尝试后在python
- 22. 的iOS - 尝试在
- 23. Windows 8/Windows Server 2012不支持尝试VSJitDebugger操作
- 24. 调试Windows服务并尝试查看它看到的内容
- 25. 尝试在Windows 8.1上安装Visual Studio 2013 Express时挂起(x64)
- 26. 尝试在Windows上编译时发出错误127
- 27. 在Windows服务中托管WebAPI第一次尝试时崩溃
- 28. PIP不能在Windows以前的尝试之后安装scrapy
- 29. 尝试在Windows 7上使用Python 3.6.2创建虚拟环境
- 30. 尝试在Windows上使用IO :: Socket的新手
David Heffernan:我可以在不同的进程中使用TryEnterCriticalSection()吗?不是线程? – yeap
@yeap关键部分不适用于各个进程。对于跨进程锁,您需要[互斥](http://msdn.microsoft.com/en-us/library/ms686927(v = VS.85).aspx)。 –
请注意,对于调用线程已拥有该锁的情况,pthread_mutex_trylock和TryEnterCriticalSection之间的返回行为不同。在这两种实现中,您稍后拥有锁,但返回码不同。有三个先决条件(没有人拥有它,我们拥有它,有人拥有它)和两个最终状态(我们拥有它,或者我们不拥有)通过两种不同的可能行为(我们锁定它,或者我们没有锁定它)。如果另一个线程拥有关键部分,则TryEnterCriticalSection返回零。如果任何线程拥有互斥锁,pthread_mutex_trylock将返回非零值。啊。 – mabraham