是否有2个或更多的线程在同一个事件处理程序中调用Win32 API的SetEvent时不安全?SetEvent是原子吗?
1
A
回答
1
这是安全的,但要记住,如果一个线程设置它,另一个线程同时设置它,你不会得到两个通知,只有一个;因为第二个将它从True改为...是真的。如果你担心这个问题,请使用Semaphores。
0
假设您有多个线程正在等待相同的事件,运行相同的代码。
- 如果您的代码在完成处理之前未清除该事件,那么您实际上拥有一个CS。由于事件一直处于信号状态,直到它被清除(又称为非自动复位),除非旋转CPU,否则多线程会发出信号。
- 如果你的代码在处理开始时清除它,或者事件是autorset,那么你将有多个线程运行相同的函数,如果这些线程共享任何东西,这是不安全的。
0
从多线程调用SetEvent没有限制。
相关问题
- 1. 嵌套的原子操作保证是原子吗?
- 2. 是linux上的python's shutil.move()原子吗?
- 3. 作家是原子方法吗?
- 4. PostgreSQL函数是原子吗? (ID生成)
- 5. 是FD_SET,FD_CLR ...原子操作吗?
- 6. Java分配问题 - 这是原子吗?
- 7. Redis ZADD或ZSCORE是原子的吗?
- 8. 是一个比较原子操作吗?
- 9. 是原子变量的多重赋值,是一个原子操作吗?
- 10. 这是更快:SetEvent的话,SendMessage,PostMessage的
- 11. 是mq_send原子?
- 12. 这里需要“原子”吗?
- 13. 非原子值得吗?
- 14. C原子操作,如果写入都是原子交换,我需要原子加载吗?
- 15. 是单行INSERT原子吗?例如。在1M列的桌子上?
- 16. 可以先在Laravel中原子处理或创建原子吗?
- 17. MGET是否是原子?
- 18. C++一个原子阵列是否也需要是原子的?
- 19. CUDA:还原还是原子操作?
- 20. WebRTC数据通道数据包是原子吗?
- 21. python中的变量保证是原子吗?
- 22. 是windows xp中的文件创建原子吗?
- 23. Redis的set命令是一个原子操作吗?
- 24. AutoResetEvent类型是原子开关的适当选择吗?
- 25. 我在用原子吗?错误还是有其他的东西....?
- 26. MERGE是SQL2008中的一个原子语句吗?
- 27. 这是原始查询的正确方法吗? - Android电子
- 28. !!boolean是java中的一个原子操作吗?
- 29. 是“云中”gsutil cp的一个原子操作吗?
- 30. 在Oracle Java 6和Windows中是File.renameTo()原子吗?
看看这个链接,它可能会解决您的疑虑:http://blogs.msdn.com/oldnewthing/archive/2009/05/22/9634511.aspx – Andrey 2009-05-26 20:03:48