问一个关于多线程的问题
For i = 0 To 100
'把一个工作分成2个两个线程工作,以提高效率
t1 = New Thread(AddressOf TD1)
t2 = New Thread(AddressOf TD2)
t1.Start()
t2.Start()
Next
问题是:怎么能让for循环停下来,等两个线程运行完了在继续执行呢?
(就是运行完 t2.start 后等两个线程运行完,返回个参数然后for循环继续运行)
请各位大虾指点:)
[解决办法]
“问题是:怎么能让for循环停下来,等两个线程运行完了在继续执行呢?
(就是运行完 t2.start 后等两个线程运行完,返回个参数然后for循环继续运行)”
“我只要他们都做完,然后再继续执行for循环就可以了。”
=========================================
还是没有明白楼主的意思,楼主的意思不是 t2 和 t1 都 执行完了再进入下一轮循环吗?
就说如果t2做的比t1快,就要在原地等t1完成了之后,再进入下一个循环,这不就等于t1/t2同步吗?
是下面这个意思吗?
For
t1.start
t2.start
'在这里等待直到 t1 t2都完成。
Next
[解决办法]
哈哈,我上面讲的方法 测试过了 可以工作 不是顺序执行,下面的例子里面 ,a.join 然后 b.join b 会先完成 并汇报,但直到两个都完成,主程序才汇报,
也就是 这两个 join 的时候,程序在那里等他们两个 都完成
so
可以揭帖了
另外顺便邀请你 去我的 space 留言(就是讲好话了)
http://nuclearphysics.spaces.live.com
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim a As New Threading.Thread(AddressOf text1)
Dim b As New Threading.Thread(AddressOf text2)
a.Start()
b.Start()
a.Join()
b.Join()
Console.WriteLine( "alldone? " & Now)
End Sub
Private Sub text1()
For i As Integer = 0 To 2000
TextBox1.AppendText( "* " & i)
Next
Console.WriteLine( "textbox1.done " & Now)
End Sub
Private Sub text2()
For i As Integer = 0 To 1000
TextBox2.AppendText( "# " & i)
Next
Console.WriteLine( "textbox2.done " & Now)
End Sub