64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <pthread.h>
#include <unistd.h>
using namespace std;
pthread_rwlock_t* rwLock = new pthread_rwlock_t;
void* readFunc(void*)
{
if(pthread_rwlock_rdlock(rwLock) != 0)
return NULL;
for(int i=0; i<3; i++)
{
cout <<"readFunc-pthread_create"<<i<< endl;
}
pthread_rwlock_destroy(rwLock);
//问题一:在这个线程里面还需要调用“pthread_rwlock_unlock”解锁吗?
}
void* writeFunc(void*)
{
sleep(1);
pthread_rwlock_wrlock(rwLock);//问题二:rwLock在其他进程中已经销毁,这边应该如何处理
for(int i=0; i<5; i++)
{
cout <<"writeFunc-pthread_create"<<i<< endl;
}
pthread_rwlock_unlock(rwLock);
return NULL;
}
int main(int argc, char* argv[]) {
pthread_rwlock_init(rwLock, NULL);
pthread_t id1, id2;
ret = pthread_create(&id1, NULL, readFunc, NULL);
ret = pthread_create(&id2, NULL, writeFunc, NULL);
pthread_join(id1, NULL);
pthread_join(id2, NULL);
return 0;
}