首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

问一个关于多线程的有关问题

2012-03-20 
问一个关于多线程的问题Fori0To100把一个工作分成2个两个线程工作,以提高效率t1NewThread(AddressOfTD1)

问一个关于多线程的问题
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

热点排行