相关疑难解决方法(0)

pthread_cond_wait为2个线程

我正在尝试实现pthread_cond_wait2个线程.我的测试代码试图使用两个线程来执行以下场景:

  • 线程B等待条件
  • 线程A打印"Hello"五次
  • 线程A表示线程B
  • 线程A等待
  • 线程B打印"再见"
  • 线程B表示线程A.
  • 循环开始(x5)

到目前为止,代码打印"Hello"五次然后卡住了.从我看到的例子来看,我似乎在正确的轨道上,"锁定互斥,等待,通过其他线程发出信号,解锁互斥,做东西,循环"

测试代码:

//Import 
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

//global variables
pthread_cond_t      condA  = PTHREAD_COND_INITIALIZER;
pthread_cond_t      condB  = PTHREAD_COND_INITIALIZER;
pthread_mutex_t     mutex = PTHREAD_MUTEX_INITIALIZER;




void *threadA()
{
    int i = 0, rValue, loopNum;

    while(i<5)
    {
        //unlock mutex
        rValue = pthread_mutex_unlock(&mutex);

        //do stuff
        for(loopNum = 1; loopNum <= 5; loopNum++)
            printf("Hello %d\n", loopNum);

        //signal condition of thread b
        rValue = pthread_cond_signal(&condB);

        //lock mutex
        rValue = pthread_mutex_lock(&mutex);

        //wait for turn
        while( …
Run Code Online (Sandbox Code Playgroud)

c linux pthreads

9
推荐指数
1
解决办法
4万
查看次数

标签 统计

c ×1

linux ×1

pthreads ×1