我設計了一個類MemoryBlock
。就像這個名字說的那樣,它是一塊(非託管的)內存。我只是做var x = new MemoryBlock (1024, 16)
,它給我1kB的內存(也對齊到16字節)。所以現在一些線程想要使用不安全的上下文來讀/寫這個塊。我做了類似SyncRoot
屬性來同步線程。所以我做了lock (myMemoryBlock.SyncRoot)
,並做了一些內存的東西。我不知道它好不好,但我在收集中看到類似的東西。
這個簡單的機制不允許多個線程訪問這個對象。可以寫作,但不足以閱讀。我想是這樣的:共享對象和線程
1)如果線程正在寫反對,沒有其他線程可以訪問這個對象
2)如果線程是從對象中讀取,許多其他的線程可以從這個對象中讀取,但不能寫它如下:
3)如果使用對象並且線程要寫入,線程將等待,直到對象空閒爲止
4)專家模式:如果某些線程正在從對象讀取,而另一個線程想要寫入對象,則等待對象免費,但也會告訴對象停止訪問想要從此對象(隊列)中讀取的新線程。
我將是簡單的技巧非常高興,而不是需要一個代碼。
你可能想看看這個問題http://stackoverflow.com/questions/2116957/readerwriterlock-vs-lock – juharr