Windows8 ThreadPool 笔记
private int interLocked = 9; private int lockInt = 19; private object lockObj = new object();private Semaphore semaphore = new Semaphore(2, 2); public MainPage() { this.InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { //线程同步: Interlocked ThreadPool.RunAsync( (source) => { Interlocked.Increment(ref interLocked); //Interlocked.Decrement(ref interLocked); }, WorkItemPriority.Normal); //lock ThreadPool.RunAsync( (source) => { lock (lockObj) { lockInt++; lockInt *= 5; } }, WorkItemPriority.Normal); //Monitor ThreadPool.RunAsync( (source) => { Monitor.Enter(lockObj); Monitor.Wait(lockObj);//释放对象上的锁并进入对象的等待队列 //Monitor.Pulse(lockObj);//通知等待队列中的线程锁定对象状态的更改 Monitor.Exit(lockObj);//释放指定对象上的锁 }, WorkItemPriority.Normal); //Semaphore ThreadPool.RunAsync( (source) => { //阻止当前线程,直到当前WaitHandle收到信号 semaphore.WaitOne(); //退出信号量并返回前一个计数 semaphore.Release(); }, WorkItemPriority.Normal); //AutoResetEvent autoRestEvent = new AutoResetEvent(false); //autoRestEvent.Set(); //ManualResetEvent manualRestEvent = new ManualResetEvent(false); //manualRestEvent.Set(); //manualRestEvent.Reset(); EventWaitHandle eventWaitHandle = new EventWaitHandle(false, EventResetMode.AutoReset, "msiEventWaitHandle"); eventWaitHandle.WaitOne(); eventWaitHandle.Set(); eventWaitHandle.Reset(); }
posted on 2013-03-27 11:00 JackSlaterYu 阅读(209) 评论(0) 收藏 举报
浙公网安备 33010602011771号