天天看点

多线程系列一

线程,进程,关系我不就不在BB了。

关于线程,其实我相信大家都了解了很多,此处我只是发表我对线程的理解和认识,不喜勿喷。如有不对之处还请大家指出。

<a></a>

上述代码大家肯定都不陌生~!

 接下来我们修改一下程序,完成单线程处理任务。我们知道很多时候,当我们的程序设计,又多个客户端或者称多个请求来源,并发请求来了以后,我们需要按照队列处理事情比如秒杀下单

通过add实现并发下单 RunTest() 方法来实现处理逻辑,

此处通过 ManualResetEvent 实现对线程的挂起和唤醒操作。当队列为空的时候,线程自动进入挂起状态,当有新的任务,add操作的时候直接唤醒挂起的线程。立即进入处理状态。

为什么选用 ManualResetEvent 这个线程通知这里就不在解释了有兴趣的可以自己百度~!

为了避免在需要关闭服务器的时候调用线程的Thread.Abort() 导致后续队列操作失效,所以加入了isRuning的bool变量实现线程是否继续运行。

多线程系列一

上述功能仅仅是永远类似于处理下单,需要单线程队列处理情况。各位看官请自行分析需求~~!

有了上述单线程处理队列需求,我们也许会想到那么在程序运行中自然有多线程处理队列。

比如我们记录日志的情况,(打个比方而已如果你很喜欢log4Net or log4J 请绕道)  我们需要提交日志记录,但是不想这个操作耽误程序的正常运行,且想日志这样的记录程序肯定不能单一线程处理,

如果日志疯狂记录,那么势必会导致处理不及时内存暴涨溢出问题

于是再次修改一下程序

输出

多线程系列一

多个线程实现了对日志记录处理,并且在空闲时间实现线程暂停,有任务唤醒,以保证,不浪费资源同时能即时处理~!

由于第一次写博客,语言组织能力差,大家就看看程序代码和注释吧!

大家多多指教。

http://www.cnblogs.com/ty408/p/4326195.html