C++多线程编程,有没有方法让线程内的一些连续的语句一次执行完,在跳到其它的线程?

因为线程内的一些语句需要一次性执行完,有没有方法能做到这样?
比如
n++;
if(n:>100)
{
。。。。
}
以上语句需要一次性执行完,中间程序不能跳到其它的线程去执行,请问有没有这样的方法?

说实话,没用过锁不建议你这么干,用锁用不好会出问题的,
你可以用一个类似信号量的机制,一种思路。
假设有两个或者多个线程同时并发:
t1、t2、t3...........tn.....,假设t1就是那个要连续执行的线程,其他线程为t1完毕后在执行。
定义一个全局变量,可以是任意类型,就以bool 为例吧:
bool b = false,默认false
下面是关键,就是定义线程的起始方法:
f1、f2、f3..........fn......,假设f1是t1的方法

void t1()
{
...//这些都是执行过程
...//这些都是执行过程
b = true;//这个是方法的最后一句,通知其他线程,我已经执行完了,你们可以开始了
}
void t2()
{
while (!b)
{
//什么都不做,空循环,当b=true的时候,while终止
}
//以下才是真正的内容
....
....
}
void f3、f4...都与f1一致,目的就是等t1完全执行完毕后才执行他们

领悟这种思想了吗?
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-24
这个可以有,在你要执行的语句前加互斥锁mutex,执行后解锁,每个线程有冲突的地方都加追问

你好,能给示例代码吗?太感谢你了

追答

关于互斥锁的使用,百度一下,有很多说明
基本步骤就是建锁,初始化,加锁,解锁

第2个回答  2012-08-24
不知道线程同步,信号量、互斥量,还搞个pi的多线程啊
相似回答