摘要: 什么是多线程?一个CPU如何实现多线程?当然是mock出来的。每个线程都有一定的优先级。对于优先级相同的线程A,B,CPU先执行A一个时间片(time slice),时间片很短,虽然大部分情况下A没有执行完,但是不再执行A,而是执行B一个时间片,然后再执行A一个time slice, 再执行B, 都执行完了,再分配给优先级低的线程。如果此时有和A,B同优先级的线程进入线程池,那么低优先级的线程只有继续等待,如果这种状态持续下去,那么low priority的thread就要"饿死"了。线程的状态当系统new一个thread的时候,状态就是Unstarted. 当一个线程开始 阅读全文
posted @ 2012-08-27 17:05 非常苹果 阅读(528) 评论(1) 推荐(1) 编辑
摘要: 虽然List里的linq方法(其实是Enumarable的)大部分比较简单 ,但是如果能够灵活运用也是提高code质量,可读性和coding能力的有效途径。而且其中有些方法,例如 Join, 光看注释可能会有点懵。 最近把他们go through了一遍。代码如下。using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Linq;using System.Coll 阅读全文
posted @ 2012-03-30 15:49 非常苹果 阅读(3499) 评论(0) 推荐(1) 编辑
摘要: lock 简单的说是在一个线程进入代码段的时候防止其他的线程进入,语法如下:lock(expression){ 代码段;}这个很简单了,像lock(this), lock(obj) 我们都很常见.问题来了,Lock后面括号里的内容是什么?他跟要被锁定的代码段有什么关系?归纳的说是:lock 锁住了一个代码段, expression 表示的是代码段是谁的 。不要咬文嚼字,所谓代码段是谁的其实没有太多的实际意义,可以直接翻译成:当2个线程的代码执行到此处,如果2个线程的 expression指向同一个引用,就能锁住,否则锁不住.假设我们是这样调用的 :protected void Page_Loa 阅读全文
posted @ 2012-01-20 15:26 非常苹果 阅读(395) 评论(0) 推荐(2) 编辑
摘要: 介绍一下WCF中如何使用MessageHeader传递信息。OperationContext是一个很重要的类,无论在客户端还是服务端的OperationContext.Current中都可以得到大量有用的信息.WCF call 把消息封装成xml格式的envelope. 在服务端跟踪一下(OperationContext.Current.RequestContext).RequestMessage.ToString()就可以看到WCF到底传递的是什么:这是添加WCF项目时自带的方法调用(GetData),123是穿过来的值,这些都在body里面,注意Header里面的UserName和Pass 阅读全文
posted @ 2012-01-10 18:15 非常苹果 阅读(822) 评论(2) 推荐(0) 编辑