小编Bry*_*end的帖子

Lock vs. ToArray用于List集合的线程安全foreach访问

我有一个List集合,我想在多线程应用程序中迭代它.我需要在每次迭代时保护它,因为它可以被更改,而且当我做foreach时我不希望"收集被修改"异常.

这样做的正确方法是什么?

  1. 每次访问或循环时都使用锁定.我很害怕死锁.也许我只是偏执使用锁而不应该.如果我走这条路以避免死锁,我需要知道什么?锁是否相当有效?

  2. 每次我执行foreach时,使用List <>.ToArray()复制到数组.这会导致性能下降,但很容易做到.我担心内存颠簸以及复制它的时间.看起来过分了.使用ToArray是否安全?

  3. 不要使用foreach而是使用for循环.每次我这样做以确保列表没有缩小时,我不需要进行长度检查吗?这看起来很烦人.

c# foreach multithreading locking toarray

22
推荐指数
3
解决办法
1万
查看次数

为什么我不能查询我刚刚通过append()添加的元素?

为什么我不能查询我刚刚通过append()添加的元素?

$('body').append('<div id="testing"></div>');
if($("#testing").length == 0)
    alert("WTF!  Testing div should be there!");
Run Code Online (Sandbox Code Playgroud)

是否有某种布局在JS完成运行之前不会发生?

我怎么能绕过这个?有没有其他方法我可以调用创建dom元素立即使用?

javascript jquery

1
推荐指数
1
解决办法
98
查看次数

标签 统计

c# ×1

foreach ×1

javascript ×1

jquery ×1

locking ×1

multithreading ×1

toarray ×1