红联Linux门户
Linux帮助

Linux线程同步互斥

发布时间:2008-10-15 10:11:33来源:红联作者:Junyi
编译 g++ -o thread_mutex mutex.cpp -lpthread
运行 ./thread_mutex
如果不加互斥量 则 输出AAAAAAAA和BBBBBBBBBB的顺序是混乱的 
如果加上互斥量 则先输出10个AAAA然后是10个BBBBBBBB[code]#include
#include
using namespace std;

pthread_mutex_t MyMutex;
void* ThreadFuncA(void *p)
{
pthread_mutex_lock(&MyMutex); //锁定互斥量
for(int j=0; j<10; ++j)
{
cout<<"AAAAAAAAAA"< sleep(1); //为了看互斥与不互斥的区别
}
pthread_mutex_unlock(&MyMutex); //释放互斥量
return NULL;
}

void* ThreadFuncB(void *p)
{
pthread_mutex_lock(&MyMutex);
for(int j=0; j<10; ++j)
{
cout<<"BBBBBBBBBBB"< sleep(3); //为了看互斥与不互斥的区别
}
pthread_mutex_unlock(&MyMutex);
return NULL;
}

int main()
{
pthread_t MythreadID1; //线程ID
pthread_t MythreadID2; //线程ID
int ThreadRet1; //线程返回值
int ThreadRet2; //线程返回值

//初始化互斥量
pthread_mutex_init(&MyMutex, NULL);
//可用返回值来判断线程是否成功 这里没有判断
ThreadRet1 = pthread_create(&MythreadID1, NULL, &ThreadFuncA, NULL);
ThreadRet2 = pthread_create(&MythreadID2, NULL, &ThreadFuncB, NULL);
pthread_join(MythreadID1, NULL); //等待线程结束
pthread_join(MythreadID2, NULL); //等待线程结束
pthread_mutex_destroy(&MyMutex); //销毁互斥量
}[/code]
文章评论

共有 3 条评论

  1. xbliu829 于 2009-07-24 10:12:27发表:

    jiushixiangkan

  2. chris078426 于 2008-10-15 12:22:52发表:

    q):-s 学习

  3. xcwen 于 2008-10-15 12:06:26发表:

    谢谢了。。