-2
我有几个不同的线程来下载一些文件,并且有可能两个不同的线程想要下载同一个文件。文件也可能非常大(> 100MB),所以我想避免下载一个文件两次。线程同步以避免多次下载
我的想法是同步线程。第一个线程t1
应该下载文件,第二个线程t2
要下载相同的文件,应该等到从t1
下载文件,然后应该从第一个线程通知下载完成。
我的问题是,我有一个未定义数量的线程(可能超过1000),它们在整个应用程序的不同位置使用。
我不知道如何在C#中做到这一点。任何人都可以给我一些启动一个想法的东西,请。
这只是一个简单的例子来说明我的问题
你不明白的问题。如果我使用锁定,其他线程(下载的其他文件)也将等待。 –
好吧,我会放弃线程并使用任务,而不是你可以使用ConcurrentDictionary来存储所有活动任务 –
然后确保你有一种检查已经下载的文件,不要让它做两次相同的文件 – BugFinder