要合理的管理线程,重要的一点是管理任务的颗粒性,就是要能够把一个长的任务分解成一些小的任务。
每次做完小任务后,查阅调度者的通知,并根据通知进行等待,或继续执行,比如下面的玩具例子:
每次做完小任务后,查阅调度者的通知,并根据通知进行等待,或继续执行,比如下面的玩具例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
volatile
bool
paused;
ManualResetEvent resumeEvent =
new
ManualResetEvent(
false
);
void
MyThread()
{
for
(
int
i = 0; i < 100; i++)
{
if
(paused)
{
resumeEvent.WaitOne();
}
DoWork();
}
}
void
Pause()
{
resumeEvent.Reset();
paused =
true
;
}
void
Resume()
{
paused =
false
;
resumeEvent.Set();
}
|