-2
我有幾個不同的線程來下載一些文件,並且有可能兩個不同的線程想要下載同一個文件。文件也可能非常大(> 100MB),所以我想避免下載一個文件兩次。線程同步以避免多次下載
我的想法是同步線程。第一個線程t1
應該下載文件,第二個線程t2
要下載相同的文件,應該等到從t1
下載文件,然後應該從第一個線程通知下載完成。
我的問題是,我有一個未定義數量的線程(可能超過1000),它們在整個應用程序的不同位置使用。
我不知道如何在C#中做到這一點。任何人都可以給我一些啓動一個想法的東西,請。
這只是一個簡單的例子來說明我的問題
你不明白的問題。如果我使用鎖定,其他線程(下載的其他文件)也將等待。 –
好吧,我會放棄線程並使用任務,而不是你可以使用ConcurrentDictionary來存儲所有活動任務 –
然後確保你有一種檢查已經下載的文件,不要讓它做兩次相同的文件 – BugFinder