簡體   English   中英

c# Thread.Equals 與 Thread.CurrentThread.ManagedThreadId 比較

[英]c# Thread.Equals vs Thread.CurrentThread.ManagedThreadId comparison

在我目前正在重構的一段代碼中,有一個包含已保存線程的字典。 現在,在一個lock塊中,我將當前線程與保存在字典中的線程進行比較

if (dictionary.ContainsKey(id) && dictionary[id] != null &&
    Thread.CurrentThread.Equals(dictionary[id].OwnerThread))
{
    release(...);
}

現在我想用Equals()替換
Thread.CurrentThread.ManagedThreadId == dictionary[id].OwnerThread.ManagedThreadId

更具體地說,Thread.Equals 是否可以返回 false 而 ManagedThreadId 比較為 true(對於同一線程)?

這兩種檢查相等性的方法沒有可比性。

Thread Equals將是一個引用 equals,因為Thread是一個不會覆蓋此行為的類。 托管線程 ID 只是整數的比較。

我不會擔心性能。 我會說您使用托管線程 ID 進行比較是正確的,因為這更正確。 但請注意,您稍后可能會獲得一個創建的線程,該線程使用與前一個線程相同的 ID(假設前一個線程不再存在)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM