我正在开发一个需要在线程池中运行许多作业的C项目.这些作业容易出错,这意味着我需要知道每个作业在完成后如何终止.作为Java程序员,我喜欢使用“期货”或类似范例的想法,类似于Java的util.concurrent包中的各种类.
我有两个问题:第一,C这样的事情已经存在(我在Boost中找不到任何东西,但也许我看起来不够努力);第二,对于C来说这是一个理智的想法吗?
我找到了一个简短的例子,说明我在这里要完成的任务:
http://www.boostcookbook.com/Recipe:/1234841
这种方法有意义吗?
解决方法:
期货存在于即将到来的标准(C 0x)和内部提升中.请注意,虽然主要名称的未来是相同的,但您需要阅读文档以找到其他类型并理解语义.我不知道Java期货,所以我不能告诉你他们的不同之处,如果有的话.
boost中的库是由Anthony Williams编写的,我相信它也参与了该部分标准的定义.他还撰写了C++ Concurrency in Action,其中包括对期货,任务,承诺和相关对象的良好描述.如果您有兴趣,他的公司还会销售完整的C 0x线程库实现.