消息队列是否支持多线程?
问题描述:
我有3个关于线程和进程通信的问题。消息队列是否支持多线程?
可以在Linux功能msgget()的msgsnd()和msgrcv()被多个线程在一个进程中调用?这些函数在不同的线程中试图访问(r/w)一个进程的消息队列。所有的比赛条件都应该由体系来照顾吗?如果没有,是否有任何好的方法来支持线程并向其主线程(进程)发送消息?
可以使用semop()函数来同步一个进程中的线程吗?
-
有一个共享内存有以下实体可以访问。
- 过程
- 多个线程在一个进程。 我是否必须同时使用进程间级别的信号量和线程级别为的信号量?任何简单的方法来处理这个?
很多问题。 :) 谢谢。
答
在一个进程中,多个线程可以调用Linux函数msgget(),msgsnd()和msgrcv()吗?
你不需要担心竞争条件,系统会照顾到这一点,这些调用没有竞争条件。
可以使用semop()函数来同步一个进程中的线程吗?
是的,更多的documentation
我一定要使用进程间水平的信号量和线程级信号灯?
这是线程或进程在全球范围内共享的任何资源是受比赛由于一个或多个线程或试图在同样的时间来访问它的进程引起的,所以,你需要访问这些共享同步全球资源。