namespace testThread
{ public class Form1 : System.Windows.Forms.Form
{ private Thread myThread1;
private Thread myThread2; public Form1()
{
InitializeComponent();
myThread1 = new Thread(new ThreadStart(runMyThread));
myThread1.Start();
myThread2 = new Thread(new ThreadStart(runMyThread2));
myThread2.Start();
myThread2.Suspend();
}
private void runMyThread()
{
while(true)
{
int a = 10;
Thread.Sleep(10000); //A
}
}
private void runMyThread2()
{
while(true)
{
int b=10;
MessageBox.Show("thread2");
}
} protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
......
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
}
}A行处的sleep运行过程中,系统狂占CPU,CPU100%,而此时线程2并未运行。请问此时CPU在执行什么操作?实在是不解。如果不启动线程2,只有线程1时,A行处的Sleep操作并不占CPU。请问是何故?
Dim T2 As Thread
Dim a As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
T1 = New Thread(AddressOf Me.ThSub1)
T1.Start()
T2 = New Thread(AddressOf Me.ThSub2)
T2.Start()
End Sub
Private Sub ThSub1()
While True
a = a + 1
SyncLock Me
Me.TextBox1.Text = a.ToString
End SyncLock
' Console.Write(a.ToString)
Thread.Sleep(1000)
End While
End Sub Private Sub ThSub2()
While True
a = a - 1
SyncLock Me
Me.TextBox1.Text = a.ToString
End SyncLock
'Console.Write(a.ToString)
Thread.Sleep(2000)
End While End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
T1.Abort()
T2.Abort()
End Sub
End Class
写了一段,没发现任何问题..