Mas*_*Mas 13 .net c# multithreading
我有一个应用程序,我想要多个线程来读取列表.我想定期用新数据更新列表.当列表更新时,我想我可以创建一个新列表并将其替换为旧列表.例:
private List<string> _list = new List<string>();
private void UpdateList()
{
var newList = new List<string>(QueryList(...));
_list = newList;
}
private void ThreadRun()
{
foreach (var item in _list)
{
// process item...
}
}
Run Code Online (Sandbox Code Playgroud)
在UpdateList方法中,创建一个新列表,并将_list引用与新列表交换.根据我的想法,任何现有的线程仍将保留对旧列表的引用(这对我来说没问题),任何新线程都将获取新列表.最终,所有线程都将结束,旧列表最终将被垃圾收集.这段代码中是否需要锁定,或者我需要注意什么才能确保安全的多线程访问?
| 归档时间: |
|
| 查看次数: |
1491 次 |
| 最近记录: |