我正在處理大量項目的解決方案。我有一個託管我的實用方法的項目。所有其他項目都使用這個項目方法。靜態類中的Thread.Sleep()
我想知道一個靜態方法是否可以同時從多個項目調用?
另外,在我的一個方法中,我有一個可選參數來執行Thread.Sleep()
如果一個項目調用這個方法時有睡眠,另一個沒有同時睡眠,會發生什麼情況?
我很困惑這個結構!
我正在處理大量項目的解決方案。我有一個託管我的實用方法的項目。所有其他項目都使用這個項目方法。靜態類中的Thread.Sleep()
我想知道一個靜態方法是否可以同時從多個項目調用?
另外,在我的一個方法中,我有一個可選參數來執行Thread.Sleep()
如果一個項目調用這個方法時有睡眠,另一個沒有同時睡眠,會發生什麼情況?
我很困惑這個結構!
我想知道靜態方法是否可以同時從多個項目調用?
那麼這取決於該方法的作用。 您需要承擔責任,確保可以同時從多個線程調用它。 (呼叫者是否在同一個項目中幾乎總是完全不相關)。
只要您不以危險的方式修改任何共享狀態 - 例如,在沒有任何同步的情況下添加到List<T>
- 你應該沒問題。這完全取決於你在做什麼。
每個調用在具有一組單獨的參數和局部變量方面將是獨立的。現在,如果其中一些參數引用了其他線程可見的對象,那麼這是另一回事......但我們無法從您的問題中得知這一點。
請注意,這裏使用Thread.Sleep
幾乎沒有關係。誠然,如果你有一定的同步(例如,通過lock
),那麼這將是該公司擁有一個鎖,然後睡線程很不愉快的...
至於功能說,主題睡眠,當前調用線程會睡在通話期間。如果你有幾個線程調用這個函數,他們都會睡覺。如果你的所有項目都是從同一個線程運行的,他們將永遠不會同時調用這個函數,並且會以串行方式休眠。
這個答案應該是有幫助的:http://stackoverflow.com/questions/3037637/c-sharp-what-if-a-static-method-is-called-from-multiple-threads – dash