消息队列是否支持多线程?

时间:2012-03-08 05:29:26

标签: c linux

我有3个关于线程和进程通信的问题。

  1. 可以在一个进程中由多个线程调用Linux函数msgget(),msgsnd()和msgrcv()吗?不同线程中的这些功能是试图访问(r / w)一个进程'消息队列。所有种族条件都应该由系统来处理吗?如果没有,是否有任何好的方法来支持线程并向其主线程(进程)发送消息?

  2. 可以使用semop()函数在一个进程中同步线程吗?

  3. 有一个共享内存,可以访问以下实体。

    • 过程
    • 一个进程中的几个线程。 我是否必须同时使用进程间级别的信号量和线程级别的信号量?有任何简单的方法来处理这个吗?
  4. 很多问题。 :)谢谢。

1 个答案:

答案 0 :(得分:3)

  

在一个进程中,多个线程可以调用Linux函数msgget(),msgsnd()和msgrcv()吗?

你不需要担心竞争条件,系统会照顾这些,这些电话没有竞争条件。

  

可以使用semop()函数在一个进程中同步线程吗?

是的,请在 documentation

中阅读更多内容
  

我是否必须使用进程间级别的信号量和线程级别的信号量?

由于一个或多个线程或进程在同一时间尝试访问它,因此线程或进程之间全局共享的任何资源都会受到竞争条件的影响,因此您需要同步对此类共享全局资源的访问。