关于Thread.Suspend()已过时的问题,我插到了下面的结果。
1.结果
实例函数Thread.Suspend和Thread.Resume在2.0版本下被标为obsolete.编译使用这2个函数的代码会得到
使用System.Threading中的其他类,如Monitor, Mutex, Event, 和Semaphore,以同步线程和保护资源。
Thread.Suspend和Thread.Resume被废弃的主要原因是因为其使用很容易造成线程死锁(Deadlock)。
要合理的管理线程,重要的一点是管理任务的颗粒性,就是要能够把一个长的任务分解成一些小的任务。
2.疑问
1.如Monitor, Mutex, Event, 和Semaphore
这些技术都是解决线程同步数据的问题,和线程的“暂停”和“继续”有什么关系呢?
2.要合理的管理线程,重要的一点是管理任务的颗粒性,就是要能够把一个长的任务分解成一些小的任务。
编程小任务,那不是要重复的创建和销毁线程这没有性能的损耗吗?
到第二个疑问,我总算弄明白这两个函数已经过过期的原因了,但是真的没有性能问题吗?
3 实验
这个两个函数虽然不被推荐,那是仍然可以用,我在下面的例子中就用到了
myThread = Thread.CurrentThread;
myThread.Suspend();
if(fun1_end && fun2_end)
{
myThread.Resume();
}
例子地址:c#-线程实验-用状态+非循环控制线程