编译 g++ -o thread_mutex mutex.cpp -lpthread
运行 ./thread_mutex
如果不加互斥量 则 输出AAAAAAAA和BBBBBBBBBB的顺序是混乱的
如果加上互斥量 则先输出10个AAAA然后是10个BBBBBBBB
#include <iostream>
#include <pthread.h>
using namespace std;
pthread_mutex_t MyMutex;
void* ThreadFuncA(void *p)
{
pthread_mutex_lock(&MyMutex); //锁定互斥量
for(int j=0; j<10; ++j)
{
cout<<"AAAAAAAAAA"<<endl;
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"<<endl;
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); //销毁互斥量
}
|
阅读(1654) | 评论(0) | 转发(1) |