Chinaunix
标题:
这样用两个互斥锁能同步这两个线程么?
[打印本页]
作者:
iw1210
时间:
2013-01-23 14:44
标题:
这样用两个互斥锁能同步这两个线程么?
本帖最后由 iw1210 于 2013-01-23 14:52 编辑
这样用两个互斥锁能同步这两个线程么?
数据D:
int D;
两个锁:
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
线程函数1:
void threadfun1()
{
while(1)
{
pthread_mutex_lock(&mutex1); //lock
D = 8;
pthread_mutex_unlock(&mutex1); //unlock
}
return;
}
线程函数2:
void threadfun2()
{
while(1)
{
pthread_mutex_lock(&mutex2); //lock
D = 9;
pthread_mutex_unlock(&mutex2); //unlock
}
return;
}
作者:
iw1210
时间:
2013-01-23 15:01
如果多个线程使用同一个函数作为线程函数,那么如果想在这个函数里定义同步对象(互斥锁、条件变量、信号灯等),就必须把它们定义成 static 类型吧?
作者:
safedead
时间:
2013-01-23 15:22
回复
1#
iw1210
你基本概念就是混乱的
作者:
lrita
时间:
2013-01-23 15:22
int D;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
线程函数1:
void threadfun1()
{
int i;
{
pthread_mutex_lock(&mutex1); //lock
D = 8;
pthread_mutex_unlock(&mutex1); //unlock
}
return;
}
线程函数2:
void threadfun2()
{
while(1)
{
pthread_mutex_lock(&mutex2); //lock
D = 9;
pthread_mutex_unlock(&mutex2); //unlock
}
return;
}
作者:
iw1210
时间:
2013-01-23 15:24
回复
4#
lrita
什么意思?
作者:
iw1210
时间:
2013-01-23 15:25
回复
3#
safedead
?
作者:
lrita
时间:
2013-01-23 15:26
int D = 0;
两个锁:
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
线程函数1:
void *threadfun1(void * arg)
{
int i;
for(i = 0; i < 1000; i++)
{
pthread_mutex_lock(&mutex); //lock
D++;
pthread_mutex_unlock(&mutex); //unlock
}
return NULL;
}
线程函数2:
void *threadfun2(void *arg)
{
int i;
for(i = 0; i < 1000; i++)
{
pthread_mutex_lock(&mutex); //lock
D++;
pthread_mutex_unlock(&mutex); //unlock
}
return NULL;
}
作者:
safedead
时间:
2013-01-23 15:30
lrita 发表于 2013-01-23 15:26
int D = 0;
两个锁:
这个是标准的正确的用法
作者:
JohnBull
时间:
2013-01-23 18:45
LZ还是报个培训班系统学一下APUE吧
作者:
梦醒潇湘love
时间:
2013-01-23 19:53
你的用法真心不对。。
作者:
一刀。
时间:
2013-01-23 22:08
线程同步必须用条件变量
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2