日期:2014-05-16  浏览次数:20600 次

线程函数
void* dosomething(void *arg)
{
步骤1
步骤2
步骤3
核心步骤
{
核心步骤1
核心步骤2.。。
}
...
}

for(int i=0;i<n;i++)
{
pthread_create(...dosomething...);
}

这样,会开好多个线程来执行好多个dosomething,

各个线程里的dosomething里的代码执行顺序是杂乱的,第1个dosomething刚执行完步骤1,第2个dosomething,就执行了步骤1,然后第1个dosomething又执行了步骤2。。。

现在的需求是,每个dosomething里的步骤1、2、3这些,执行顺序可以乱,但是,核心步骤里的代码,必须是一个dosomething执行完,再允许另一个dosomething执行,但是允许先执行dosomething2里的核心步骤,后执行dosomething1里的核心步骤,也可以。

------解决方案--------------------
需要互斥锁同步一下吧
------解决方案--------------------
引用:
需要互斥锁同步一下吧
+++1
------解决方案--------------------
一把锁就解决了。
------解决方案--------------------
核心步骤外面包一层控制,即互斥锁
------解决方案--------------------
lock()
{
核心步骤1
核心步骤2.。。
}
unlock()