我有3个关于线程和进程通信的问题。
可以在一个进程中由多个线程调用Linux函数msgget(),msgsnd()和msgrcv()吗?不同线程中的这些功能是试图访问(r / w)一个进程'消息队列。所有种族条件都应该由系统来处理吗?如果没有,是否有任何好的方法来支持线程并向其主线程(进程)发送消息?
可以使用semop()函数在一个进程中同步线程吗?
有一个共享内存,可以访问以下实体。
很多问题。 :)谢谢。
答案 0 :(得分:3)
在一个进程中,多个线程可以调用Linux函数msgget(),msgsnd()和msgrcv()吗?
你不需要担心竞争条件,系统会照顾这些,这些电话没有竞争条件。
可以使用semop()函数在一个进程中同步线程吗?
是的,请在 documentation
中阅读更多内容我是否必须使用进程间级别的信号量和线程级别的信号量?
由于一个或多个线程或进程在同一时间尝试访问它,因此线程或进程之间全局共享的任何资源都会受到竞争条件的影响,因此您需要同步对此类共享全局资源的访问。