Sharing A Powerful Tool For Application Auto Monitor
摘要:本文分享的这个应用监控小工具,本来是我在五年多以前开发实现的windows服务监控的一个windows服务。听上去比较拗口吧,是的,这个应用一开始就是个监控windows服务的windows服务。记得当时写这个程序的直接原因就是,做数据统计结转迁移备份之类的后台定时windows任务实在太多,而且由...
阅读全文
posted @
2015-05-20 21:13
JeffWong
阅读(1610)
推荐(8) 编辑
Lock,LockFree,MemoryBarrier,ConcurrentCollection
摘要:最近看并行编程书本的一些心得,简单记录下多线程和并行编程必知必会的几个概念,再次加深自己的理解。.NET Framework4提供了一个新的命名空间System.Collections.Concurrent用于解决常用集合在并发情况下的线程安全问题(ps:通过这个命名空间还可以访问用于并行化循环和PLINQ的自定义分区器Partitioner)。这个命名空间下的所有线程安全集合都在某种程度上使用了无锁技术。也就是说,这些集合通过使用比较并交换(Compare And Swap,CAS)指令和内存屏障(Memory Barrier),避免了使用典型的互斥的重量级的锁,虽然实际开发中对性能要求不高
阅读全文
posted @
2014-03-10 20:16
JeffWong
阅读(1813)
推荐(4) 编辑
线程池ThreadPool知识碎片和使用经验速记
摘要:ThreadPool(线程池)大概的工作原理是,初始时线程池中创建了一些线程,当应用程序需要使用线程池中的线程进行工作,线程池将会分配一个线程,之后到来的请求,线程池都会尽量使用池中已有的这个线程进行响应,如果请求过多的话,线程池将会按照策略等待或者创建新的线程进行响应直到达到上限。当线程池中的线程处于空闲状态一定时间后(具体多少看环境)线程池池内的空闲线程将会进行自我终结。1、CLR的一个进程内会维护一个线程池,线程池被该进程内所有应用程序域共享。托管线程池中的线程为后台线程, 即线程的IsBackground属性为true。这意味着在所有的前台线程都已退出后,ThreadPool 线程不会
阅读全文
posted @
2013-12-21 19:21
JeffWong
阅读(1174)
推荐(2) 编辑
通用对象池ObjectPool的一种简易设计和实现方案
摘要:对象池,最简单直接的作用当然是通过池来减少创建和销毁对象次数,实现对象的缓存和复用。我们熟知的线程池、数据库连接池、TCP连接池等等都是非常典型的对象池。一个基本的简易对象池的主要功能实现我认为应该至少包括以下三点:1、对象的分配、销毁等管理策略2、线程安全3、性能按照主要的常用功能,我们大致可以抽象出以下泛型接口IObjectPool:IObjectPoolusing System;/// /// Simple ObjectPool Interface/// /// public interface IObjectPool : IDisposable{ #region Properti...
阅读全文
posted @
2013-10-24 21:54
JeffWong
阅读(1677)
推荐(2) 编辑
一个应用程序多线程误用的分析
摘要:一、需求和初步实现很简单的一个windows服务:客户端连接邮件服务器,下载邮件(含附件)并保存为.eml格式,保存成功后删除服务器上的邮件。实现的伪代码大致如下:GetAndSaveMail public void Process() { var recordCount = 1000;//每次取出邮件记录数 while (true) { using (var client = new Pop3Client()) { ...
阅读全文
posted @
2012-12-04 23:16
JeffWong
阅读(1966)
推荐(3) 编辑
浅析线程安全容器的实现
摘要:最近写了个小程序用到了C#4.0中的线程安全集合。想起很久以前用C#2.0开发的时候写后台windows服务,为了利用多线程实现生产者和消费者模型,经常要封装一些线程安全的容器,比如泛型队列和字典等等。下面就结合部分MS的源码和自己的开发经验浅显地分析一下如何实现线程安全容器以及实现线程安全容器容易
阅读全文
posted @
2012-09-09 20:22
JeffWong
阅读(7910)
推荐(7) 编辑
关于C#线程,线程池和并行运算的简单使用和对比
摘要:前言:看了书上两个使用C#4.0并行编程的demo,又对照以前收藏的网上几篇讲述线程池的雄文,一并整理,写个示例总结一下。写这篇文章的时候,发现关于线程的好几个基础的重要的知识点自己都不熟悉,而且可能习惯性认知浅薄,所以痛苦的无以复加,不知道到底要说什么。不想看文章的可以直接下载最后的示例,本文代码主要参考Marc Clifton的“.NET's ThreadPool Class - ...
阅读全文
posted @
2010-11-12 23:26
JeffWong
阅读(17255)
推荐(13) 编辑