首页 热点资讯 义务教育 高等教育 出国留学 考研考公

Linux多线程实现线程间不停的切换

发布网友 发布时间:2022-04-19 22:23

我来回答

1个回答

热心网友 时间:2023-09-04 09:54

你这个问题很有意思。第一次执行的时候,可以看出,能执行0~6共7次;第二次的时候,从6开始,到5,只有2次了,并且以后都是只有2次。
基于你的描述,我想可以用互斥信号量来做。
1、初始化2个信号量pmutex1(有资源), pmutex2(无资源),初始化gnum=0
2、启动两个线程
2.1 线程1
lock_the_mutex_signal(pmutex1); // 上锁自身线程,首次可执行
while (gnum < 5) {
do_sth(); // 做你的业务逻辑

gnum++; // 增加执行次数

} // end while()
unlock_the_mutex_signal(pmutex2); // 解锁另一线程
2.2 线程2

lock_the_mutex_signal(pmutex2); // 上锁自己,首次执行将阻塞,并交出CPU
while (gnum > 5) {
do_sth(); // ...

gnum--; // ...

} // end while()
unlock_the_mutex_signal(pmutex1); // release the lock
PS:如果你不是非常严格地(从系统级杜绝不该被执行的线程被调用)要求线程切换的话,这个逻辑应该可以工作。自己没有试,希望你明白我的思想,如有错误,自己再修改一下。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com