JNY*_*ger 5 c multithreading synchronization posix ipc
据我所知,POSIX消息队列不需要在不同进程之间进行同步.但是,在单个进程中被多个线程访问时它们的安全性如何?
我读到了这个问题:消息队列是否支持多线程?这与SysV消息队列有关,我认为POSIX至少具有相同的支持.它似乎暗示是的,它们是线程安全的,但是:
"线程或进程之间全局共享的任何资源都受竞争条件的影响"
这将使我相信仍然需要进程内同步.
在我的情况下,特别是使用消息队列进行通信的两个进程都实现了"boss-worker"模式,因此当尝试对消息队列执行操作时,worker可能会碰撞竞争条件.我的假设是否正确,说明对这些队列的访问仍然需要在每个进程内同步?
如果您将共享内存的内存地址(在进程中的线程之间或进程之间共享的内存)作为消息内容传递,那么一旦从外部读取其地址,您仍需要内存同步来访问该内存.信息.但是你不需要任何额外的同步来对消息队列本身执行操作(除了破坏它,当然,在最后一个用户完成它之前你不应该这样做).这就是拥有消息队列的重点.
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |