运行 ./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"<
}
pthread_mutex_unlock(&MyMutex); //释放互斥量
return NULL;
}
void* ThreadFuncB(void *p)
{
pthread_mutex_lock(&MyMutex);
for(int j=0; j<10; ++j)
{
cout<<"BBBBBBBBBBB"<
}
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]
xbliu829 于 2009-07-24 10:12:27发表:
jiushixiangkan
chris078426 于 2008-10-15 12:22:52发表:
q):-s 学习
xcwen 于 2008-10-15 12:06:26发表:
谢谢了。。