首页 > 试题广场 >

四个线程t1,t2,t3,t4,向4个文件中写入数据,t1只

[问答题]
四个线程t1,t2,t3,t4,向4个文件中写入数据,t1只能写入1,t2只能写入2,t3只能写入3,t4只能写入4,对4个文件A,B,C,D写入如下内容:
A:123412341234.....
B:234123412341....
C:341234123412....
D:412341234123....
怎么实现同步可以让线程并行工作?

mutex[4]= {0}

for(i =0; i<4;i = (i+1 )%4)  
 {
    single(mutex[i])
    wait(mutex[i]);
        t_i;
   single(mutex[(i+1)%4])
   wait(mutex[(i+1)%4)])
 .......


}
发表于 2015-06-23 21:21:20 回复(0)
这个问题在操作系统课程中提到,利用信号量来实现线程的前趋关系
对于A来说,要求是线程1->2->3->4->1的关系,这样的话我们定义五个信号量mutex1,mutex2,mutex3,mutex4,mutex5,

初始化:signal(mutex1);

线程1的执行函数
wait(meutex1)
/....
写文件代码

signal(mutext2)


线程2的执行函数
wait(meutex2)
/....
写文件代码

signal(mutext3)


线程3的执行函数
wait(meutex3)
/....
写文件代码

signal(mutext4)

线程4的执行函数
wait(meutex4)
/....
写文件代码

signal(mutext5)

线程5的执行函数
wait(meutex5)
/....
写文件代码

signal(mutext1)











发表于 2015-06-22 22:55:01 回复(0)