【问题标题】:How can I use Semaphore in this C code about multithreading如何在这个关于多线程的 C 代码中使用信号量
【发布时间】:2017-05-28 09:17:10
【问题描述】:

我正在解决关于线程的分配问题。 这是关于对随机小写字符进行排序。 当它分类好时,我打印出 O 标记,与否,打印出 X。 使用 2 个线程。

我需要使用信号量编写代码,但我不知道如何以及在哪里编写信号量。

所以一旦我编写了没有信号量的代码。 我现在应该添加 Sempahore。但我不知道要修复哪个部分。

你能帮帮我吗? 我必须为信号量再做一个功能吗?

这是我的 C 代码。

【问题讨论】:

  • 一个int_array,两个线程:(
  • 为什么排序中有nanosleep()?
  • 我不明白你的意思,那我不能用信号量吗?你能详细解释一下吗?
  • 我只是按照我的教授的例子。给我们。他说我们应该使用信号量,但我不知道在哪里插入。
  • 我不明白您发布的有关信号量的任何内容。它们是一个同步对象,由您的操作系统提供和管理,并由 pthreads 库提供给您的用户代码。信号量仅支持两种操作,post 和 wait,这是有据可查的。请详细说明您想做什么。

标签: c multithreading pthreads semaphore


【解决方案1】:

正如 ThingyWotsit 所说,一定要回到你的教授那里。

对于信号量,把它的概念想象成一扇门。

  • 前面提到的sem_post() 会将信号量的计数器增加1。
  • sem_wait() 将允许线程通过并将计数器减 1;
  • 然而,如果在sem_wait() 计数器达到 0 之后,任何其他的sem_wait() 都会停止线程,关闭门直到sem_post> 1

希望对你的努力有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 2010-10-15
    • 2018-11-05
    相关资源
    最近更新 更多