我正在使用work_pile模式,因此线程始终在运行并在信号量上等待传入的新函数指针+队列中的数据。那就是苹果营销人员现在称之为Grand Central Dispatch并宣传为新切片面包的东西。
我只是想知道如何找出将短任务分成两个甚至更短的任务是否有用。是否有规则可以判断是否值得排队新对象?
答案 0 :(得分:1)
两个可能的答案:
我更喜欢第二个。
无论如何,如果两个任务总是一个接一个地运行(即顺序),我认为没有任何收益可以拆分它们。
答案 1 :(得分:1)
多任务处理的限制是您拥有多少核心以及并发算法的多少。各种类型的开销(包括锁定)可以减少并发数量,降低甚至逆转多任务处理的好处。这就是为什么当有独立的,长期运行的任务时它最有效。话虽如此,只要开销不会吞噬性能提升,就可以在核心之间划分一个简短的任务。
答案 2 :(得分:1)
简短的回答是,您需要考虑资源+工作量+基准测试。
以下是一些可能发生故障的方法:
所以,简而言之,我要说你在打字之前需要思考。如果您已经拥有可以运行的代码,那就像银行里的钱一样。是否值得投入更多时间来提高代码的生产率,或者投资回报率是否过低(或为负数!)?