标签: concurrency

如何在Python中使用线程?

我试图理解Python中的线程.我看过文档和示例,但坦率地说,很多例子都过于复杂,我很难理解它们.

你如何清楚地展示为多线程划分的任务?

python concurrency multithreading python-multithreading

1210
推荐指数
18
解决办法
94万
查看次数

968
推荐指数
27
解决办法
19万
查看次数

什么是比赛条件?

编写多线程应用程序时,遇到的最常见问题之一是竞争条件.

我对社区的问题是:

什么是比赛条件?你怎么发现它们?你怎么处理它们?最后,你如何防止它们发生?

concurrency multithreading terminology race-condition

915
推荐指数
11
解决办法
54万
查看次数

收集被修改; 枚举操作可能无法执行

我无法理解这个错误的底部,因为当附加调试器时,它似乎不会发生.下面是代码.

这是Windows服务中的WCF服务器.每当存在数据事件时,服务就会调用NotifySubscribers方法(以随机间隔,但不常见 - 每天约800次).

当Windows窗体客户端订阅时,订户ID将添加到订阅者字典中,当客户端取消订阅时,将从字典中删除它.客户端取消订阅时(或之后)发生错误.看来,下次调用NotifySubscribers()方法时,foreach()循环失败并显示主题行中的错误.该方法将错误写入应用程序日志,如下面的代码所示.当附加调试器并且客户端取消订阅时,代码执行正常.

你看到这段代码有问题吗?我是否需要使字典线程安全?

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
public class SubscriptionServer : ISubscriptionServer
{
    private static IDictionary<Guid, Subscriber> subscribers;

    public SubscriptionServer()
    {            
        subscribers = new Dictionary<Guid, Subscriber>();
    }

    public void NotifySubscribers(DataRecord sr)
    {
        foreach(Subscriber s in subscribers.Values)
        {
            try
            {
                s.Callback.SignalData(sr);
            }
            catch (Exception e)
            {
                DCS.WriteToApplicationLog(e.Message, 
                  System.Diagnostics.EventLogEntryType.Error);

                UnsubscribeEvent(s.ClientId);
            }
        }
    }


    public Guid SubscribeEvent(string clientDescription)
    {
        Subscriber subscriber = new Subscriber();
        subscriber.Callback = OperationContext.Current.
                GetCallbackChannel<IDCSCallback>();

        subscribers.Add(subscriber.ClientId, subscriber);

        return subscriber.ClientId;
    }


    public void UnsubscribeEvent(Guid clientId)
    {
        try
        {
            subscribers.Remove(clientId);
        }
        catch(Exception …
Run Code Online (Sandbox Code Playgroud)

c# concurrency wcf dictionary thread-safety

861
推荐指数
10
解决办法
57万
查看次数

847
推荐指数
16
解决办法
31万
查看次数

什么是互斥?

互斥体是一种经常用于解决多线程问题的编程概念.我向社区提出的问题:

什么是互斥锁,你如何使用它?

concurrency multithreading mutex

611
推荐指数
10
解决办法
26万
查看次数

JavaScript保证是单线程的吗?

众所周知,JavaScript在所有现代浏览器实现中都是单线程的,但是它是在任何标准中指定的还是仅仅是传统的?假设JavaScript始终是单线程的,这是完全安全的吗?

javascript concurrency

588
推荐指数
8
解决办法
12万
查看次数

ConcurrentHashMap和Collections.synchronizedMap(Map)有什么区别?

我有一个Map,它将被多个线程同时修改.

Java API中似乎有三种不同的同步Map实现:

  • Hashtable
  • Collections.synchronizedMap(Map)
  • ConcurrentHashMap

据我所知,这Hashtable是一个旧的实现(扩展过时的Dictionary类),后来经过调整以适应Map界面.虽然它同步的,但似乎存在严重的可扩展性问题,并且不鼓励新项目.

但是其他两个怎么样?返回的地图Collections.synchronizedMap(Map)ConcurrentHashMaps 之间有什么区别?哪一种适合哪种情况?

java concurrency dictionary

577
推荐指数
13
解决办法
33万
查看次数

为什么ConcurrentHashMap没有ConcurrentHashSet

HashSet基于HashMap.

如果我们看一下HashSet<E>实现,一切都在管理之下HashMap<E,Object>.

<E>被用作关键词HashMap.

我们知道这HashMap不是线程安全的.这就是我们ConcurrentHashMap在Java中的原因.

基于此,我很困惑,为什么我们没有一个应该基于的ConcurrentHashSet ConcurrentHashMap

还有什么我想念的吗?我需要Set在多线程环境中使用.

另外,如果我想创建我自己的ConcurrentHashSet,我可以通过替换HashMapto来实现它,ConcurrentHashMap并将其余部分保留原样?

java collections concurrency hashmap hashset

496
推荐指数
8
解决办法
20万
查看次数

NSOperation vs Grand Central Dispatch

我正在学习iOS的并发编程.到目前为止,我已经读过NSOperation/NSOperationQueueGCD.使用NSOperationQueueover 的原因是什么GCD,反之亦然?

听起来像是两者,GCD并从用户那里NSOperationQueue抽象出明确的创造NSThreads.然而这两种方法之间的关系对我来说并不清楚,所以任何反馈都要赞赏!

concurrency nsoperation nsoperationqueue grand-central-dispatch ios

454
推荐指数
7
解决办法
11万
查看次数