当前位置: 首页 > 知识库问答 >
问题:

使用信号量在进程之间同步for循环

陈康胜
2023-03-14
    null

更新

在OS X上,sem_init()没有按预期工作。使用sem_open()来解决这个问题。参考:http://lists.apple.com/archives/darwin-dev//2008/oct/msg00044.html

共有1个答案

顾亦
2023-03-14

在psuedo代码中,当父线程自己释放信号量时,它就需要信号量。现在,信号量是可用的,parent将继续执行。当它的时间片过期时,内核可能会切换到子进程,但它正在等待信号量。信号量由父进程获取。所以parent将继续执行。

在这个场景中,parent执行了两次,child不执行。

这可能导致执行不同步。

 类似资料:
  • 在中,我试图将数据写入共享内存。同时,在中,我正在从相同的共享内存中读取数据。在本例中,我需要在这两个进程之间提供同步。如果我将使用未命名的信号量(使用),它是否有效? 我已经写了这样的代码,它会工作还是不工作?

  • 头文件 semaphore.h sys/stat.h fcntl.h 常用函数 函数 说明 [[sem_open sem_open]] 打开一个有名信号量 [[sem_close sem_close]] 关闭一个信号量 [[sem_unlink sem_unlink]] 删除一个信号量 [[sem_post sem_post]] 【V操作】释放操作:信号量的值加1 [[sem_wait sem_w

  • 本文向大家介绍详解Linux多线程使用信号量同步,包括了详解Linux多线程使用信号量同步的使用技巧和注意事项,需要的朋友参考一下 信号量、同步这些名词在进程间通信时就已经说过,在这里它们的意思是相同的,只不过是同步的对象不同而已。但是下面介绍的信号量的接口是用于线程的信号量,注意不要跟用于进程间通信的信号量混淆。 一、什么是信号量 线程的信号量与进程间通信中使用的信号量的概念是一样,它是一种特殊

  • 我想使用4个线程和信号量来实现游戏。 我设法使线程按照所需的顺序工作:。 然而,我无法使整个过程循环。 每个方法都有自己的信号量,尽管在释放下一个方法信号量之前锁定了自己的信号量,但这些方法只是不挂起第二个获取(实际上是方法中的第一个)。

  • 进程的管理主要是指进程的关闭与重启。我们一般关闭或重启软件,都是关闭或重启它的程序,而不是直接操作进程的。比如,要重启 apache 服务,一般使用命令"service httpd restart"重启 apache的程序。 那么,可以通过直接管理进程来关闭或重启 apache 吗?答案是肯定的,这时就要依赖进程的 信号(Signal)了。我们需要给予该进程号,告诉进程我们想要让它做什么。 系统中