Linux下的线程库pthread库中的pthread_create()函数创建两个线程。

Linux下的线程库pthread库中的pthread_create()函数创建两个线程。,第1张

void * thread1()//线程1

{

//............. 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要学会良好的变量命名习惯,这样对你以后有好处。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8914442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存