
{
//............. pthread_mutex_lock(&mut)
a += 1 //①
b = a //②
pthread_mutex_unlock(&mut)
}
void * thread2()//线程2
{
//.............
pthread_mutex_lock(&mut)
a += 2
pthread_mutex_unlock(&mut)
}
这样就行呀, 加锁后另一个要等待锁释放
创建2个线程,一个为GetInput,一个为PutInputSum,功能分别为接收输入和打印整数和的功能void GetInput(char *arg)
{
while(1)
{
//一直等待输入
if(有输出)
{
//获取信号量a
//保存2个整数值
//释放信号量b
}
}
}
void PutInputSum()
{
while(1)
{
//阻塞获取信号量b
//计算2个整数的和,并输出
//释放信号量a
}
}
兄弟,伪码基本是这样了,具体的要自己实现。只要是利用信号量实现同步。2个线程,在没有输入的情况下都是阻塞的,不消耗CPU资源
printf("1\n")printf("2\n")
不可能不执行吧,除非你的程序其它地方有问题,比如juzhen1或juzhen2有问题,导致程序挂掉了
还有顺便说一句,你这个时间统计根本就是创建两个线程的所消耗的时间,而不是这两个线程执行的时间,如果你要统计这两个线程执行时间,你应该在
pthread_join(pid1, NULL)
pthread_join(pid2, NULL)
end=clock()
这样只有在两个线程执行完后才会执行end=clock()这一句
还有 pthread_t pid1, pid2这两句最好改成 pthread_t tid1, tid2要学会良好的变量命名习惯,这样对你以后有好处。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)