JavaScript Editor
JavaScript Debugger|
| ||
When you start multiple threads and need to coordinate their operation in some way—for instance, so that they can share the same resource in memory—you need to synchronize them. As mentioned in the In Depth section of this chapter, you can use events to communicate between threads. You also can use the SyncLock statement or the Join method—see the next two topics in this chapter.
For example, we took a look at all these techniques in the SynchronizeThreads example, discussed in the In Depth section of this chapter. In that example, we created a new class named counter with one data member, Total:
Public Class counter
Public Total As Integer
End Class
The SynchronizeThreads example used two synchronized threads to increment the Total data member to a value of 200, as you see in Figure 24.11. Here's the code for the main form in that example, Form1.vb:
Public Class Form1
Inherits System.Windows.Forms.Form
Dim c As New counter()
Dim Thread1 As New System.Threading.Thread(AddressOf Counter1)
Friend WithEvents Label1 As System.Windows.Forms.Label
Dim Thread2 As New System.Threading.Thread(AddressOf Counter2)
' Windows Form Designer generated code...
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Thread1.Start()
Thread2.Start()
Thread1.Join()
Thread2.Join()
TextBox1.Text = c.Total
End Sub
Private Sub Counter1()
Dim LoopIndex As Integer
For LoopIndex = 1 To 100
SyncLock c.GetType
Dim temp = c.Total
Thread1.Sleep(1)
c.Total = temp + 1
End SyncLock
Next LoopIndex
End Sub
Private Sub Counter2()
Dim LoopIndex As Integer
For LoopIndex = 1 To 100
SyncLock c.GetType
Dim temp = c.Total
Thread2.Sleep(1)
c.Total = temp + 1
End SyncLock
Next LoopIndex
End Sub
End Class
For more details on this example, see the discussion in the In Depth section of this chapter, and the next two topics.
|
| ||
Free JavaScript Editor
JavaScript Editor