我认为您的公司不应该使用多线程。
在完成一个大型多线程项目之后,我发现两种技术对于使事情正常运行至关重要。 首先,必须正确编写代码。必须手动检查每个字段,以确保正确声明了该字段,并在引用的任何地方正确同步了该字段。(警告:我在这里做了一些简化,以使答案简短(或至少要缩短)。) 其次,必须通过在单核和多核计算机上完全运行代码来测试代码-使用100%的很多分钟每个核心。(而且,如果像我通常那样只使用每个内核的2%,那也是一个错误。)
您也许可以管理它,但是您的组织却不能。即使他们了解问题,但他们没有,他们也没有专业知识。
大多数语言都提供了避免这种情况的方法。如果您有一个套接字读取器,该套接字读取器通常具有自己的线程,则应使其尽可能快且简单地将信息获取到主线程。更好的是,寻找可以为您处理读数的螺纹部分的系统类/函数。像大多数GUI API一样,使用一个一个接一个运行“事件”的队列。(为此,请使用GUI API的事件队列本身。)如果需要并行处理,则可能会找到某种“工作线程”,该数据将使您将数据/字段保留在单个线程中,从而为您处理所有传输。
强调多线程的所有危险。(可怕的故事:我最喜欢的错误涉及几行,如: int i = 5; i = i * i;
,结果i
值为35。我看到的很多东西是:if (thing != null) thing.reset();
抛出空指针异常。)我认为您唯一的希望就是让他们理解它们踏入一个全新的,陌生的世界,也许他们应该向后退一步。
我不是真正的多线程肯定如何应处理。如果可以把工作交给一个人,如果失败了,他们所做的一切都会被扔掉,很好。但是一个团队只会和最弱的成员一样强大,即使是一个优秀的程序员也将无法使用成熟的多线程。我希望语言使用者会找到一种确保安全的方法。我已经看到了一些有用的软件。但是我认为最好避免多线程,除非执行时间很关键并且有一个好的程序员或一个成熟的团队可用。