我是多线程新手。如果有人能清除我的怀疑,我会很高兴。
我有3个线程t1,t2和t3。如果我在t1上使用join,如下所示,所有其他线程等待t1完成。是否有可能只是让t2等待t1完成,这样t1和t3可以同时运行?
t1.start();
t1.join();
t2.start();
t3.start();
答案 0 :(得分:2)
如果我在
t1
上使用如下所示的联接,则所有其他线程都会等待t1
完成。
没有。只有执行t1.join()
调用的线程才会等待t1
完成。所有其他主题继续。
我是否可以让
t2
等待t1
完成,以便t1
和t3
可以同时运行?
从t1.join()
主题上运行的代码执行t2
。
答案 1 :(得分:-1)
在start
上调用join
之前,您应该join
要同时运行的所有线程,因为main
将阻止joined
线程直到t1
线程完成。所以,如果你想运行t3
和t2
,然后在前两个完成后启动//Start t1, t3
t1.start();
t3.start();
//Wait until t1 completes
t1.join();
//Wait until t3 completes, if this is required
t3.join();
//Start t2
t2.start();
//Wait until t2 completes, if this is required
t2.join();
,你应该
//looping set1
for(x=0;x<=15;x++)
{
setcolor(x);
sleep(3000);
}
setfillstyle(1,1);
fillpoly(13,lyt1);
fillpoly(9,lyt2);
fillpoly(9,lyt3);
fillpoly(12,lyt4);
//looping set2
for(x=0;x<=15;x++);
{
setcolor(x);
sleep(3000);
}
setfillstyle(1,1);
fillpoly(11,lyt5);
fillpoly(12,lyt6);
fillpoly(13,lyt7);
fillpoly(12,lyt8);
答案 2 :(得分:-1)
是的:您可以在t3.start()
之前t1.join()
:
t1.start();
t3.start();
t1.join();
t2.start();