📄 frmdeadlock.vb
字号:
Imports Microsoft.VisualBasic
Imports System
Imports System.Windows.Forms
Imports System.Threading
Imports System.Diagnostics
Namespace CodeForChapter11cs
Public Partial Class frmDeadlock
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
Private someLock As Object = New Object()
Private someOtherLock As Object = New Object()
Private Sub menuItem1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles menuItem1.Click
Dim t1 As Thread = New Thread(AddressOf Me.DeadlockOne)
t1.Name = "Worker Thread 1 "
't1.IsBackground = true
Dim t2 As Thread = New Thread(AddressOf Me.DeadlockTwo)
t2.Name = "Worker Thread 2 "
't2.IsBackground = true
t1.Start()
t2.Start()
End Sub
Private Sub DeadlockOne()
Debug.WriteLine(Thread.CurrentThread.Name & " enters DeadLockOne")
SyncLock someLock
Debug.WriteLine(Thread.CurrentThread.Name & " obtained SomeLock")
' run some code
Thread.Sleep(1) 'simulate a context switch
SyncLock someOtherLock
Debug.WriteLine(Thread.CurrentThread.Name & " obtained SomeOtherLock")
'run some more code
End SyncLock
End SyncLock
MessageBox.Show("Thread 1 done")
End Sub
Private Sub DeadlockTwo()
Debug.WriteLine(Thread.CurrentThread.Name & " enters DeadLockTwo")
SyncLock someOtherLock
Debug.WriteLine(Thread.CurrentThread.Name & " obtained SomeOtherLock")
' run some code
Me.AnotherDemoMethod()
End SyncLock
MessageBox.Show("Thread 2 done")
End Sub
Private Sub AnotherDemoMethod()
Debug.WriteLine(Thread.CurrentThread.Name & " enters AnotherDemoMethod")
SyncLock someLock
Debug.WriteLine(Thread.CurrentThread.Name & " obtained SomeLock")
'run some more code
End SyncLock
End Sub
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -