0

我正在编写一个创建三个线程的代码。现在使用 pthread_mutex 我如何同步它们?可以说我有这种类型的代码:-

#include<stdio.h>
#include<pthread.h>

void *function1(void *ptr)
{

   do something on a buffer;
}

void *function2(void *ptr)
{
  do samething else but ob the same buffer;
 }

void *function(void *ptr)
{
  do samething else again on buffer;
}


main()
{ 
   pthread_t t1,t2,t3);
   int a,b,c;
   a= creates a thread using pthread_create(&t1,NULL,func1,NULL);
   b= creates a thread using pthread_create(&t2,NULL,func2,NULL);
   c= creates a thread using pthread_create(&t3,NULL,func1,NULL);

 and after that pthread_join wait till all the threads gets finished;
}

但是正如你所看到的,当你做这样的事情时,所有线程同时启动,结果并不像预期的那样。现在我们如何使用 pthread_mutex 来锁定和解锁同一个缓冲区,以便一次只有一个线程可以处理它?我也希望 t1 先到,然后再到 t2,再到 t3。基本上我必须设置优先级怎么办?

4

1 回答 1

2

请参阅此示例:http: //sourcecookbook.com/en/recipes/70/basic-and-easy-pthread-mutex-lock-example-c-thread-synchronization

你必须做一点阅读,但这很容易。您必须声明和初始化互斥锁: pthread_mutex_t myMutex; pthread_mutex_init(&myMutex, NULL);

并使用它:

pthread_mutex_lock(&myMutex);

// 这里使用缓冲区

pthread_mutex_unlock(&myMutex);

也不要忘记清理: pthread_mutex_destroy(&myMutex);

于 2013-08-25T11:27:54.517 回答