C#中各種Lock的速度比較

來源:互聯網
上載者:User

簡單寫了個小程式,比較了一下C#中各種Lock的速度(前提是都沒有進入wait狀態)。

各進入離開Lock 1kw次,結果如下:

Lock Time (ms)
CriticalSection 726
Interlocked 344
Readerslim 1932
Writerslim 1513
Reader 3754
Writer 3430
Mutex 24998
Semaphore 24197
Event 22549

 

結論如下:

  1. Interlocked可以直接編譯為CPU指令,速度最快,雖然功能較少但能用則用。
  2. CriticalSection(也就是lock關鍵字或者Monitor.Enter()方法)僅比Interlocked慢,建議使用。
  3. 對於ReaderWriterLock和ReaderWriterLockSlim,Slim快近一倍,但缺點是不能track owner,也就是同一線程不能多次進入同一個lock。Reader比Writer要慢,估計是要維護reader count的原因。
  4. Mutex,Semaphore,Event即使可以獲得lock也要進入核心模式,所以最慢,要盡量避免使用。

代碼下載:

http://usayjq.bay.livefilestore.com/y1pbebZJ6xcesXSXcujFmihM0LVhFuA62IJ37Gz0vgDI2CLDpEGuwwB_E1E5CnDpJBQoVgilKW-61Y/LockSpeedTester.zip?download

 

轉自:http://www.cnblogs.com/palo/archive/2009/03/03/1402642.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.