我最近一直在Linux上使用pthreads,并希望在不久的将来开始研究使用boost线程。我从来没有使用过MS visual studio,所以我不知道那里的方法,但我(必须)使用Embarcadero C ++ Builder(以前的Borland),我发现它的少数好东西之一是它有一个内置类{{ 1}}。这是一个可以派生的类,用于提供精确封装的数据以及启动和终止函数。我更喜欢这种方法,而不是传递函数的pthread方法,并且TThread
被传递给线程创建函数。我想知道是否存在某种通常用于提供更面向对象的设计模式或结构,以这种方式封装线程的功能?我可以尝试自己创造它,但我不能成为第一个想要这种方法的人,并想知道是否有一种“标准”的方法来实现它。
编辑:或者,如果这是一个非常糟糕的想法或许可以说明原因?
答案 0 :(得分:1)
我认为最标准的方法将使用标准线程库(与boost::thread
密切相关,而不是100%相同)。我会避免重新设计已经由专家委员会设计,审查和验证的内容。
另请注意,对于您在评论中提到的那种操作,您可能需要查看标准库的 future 部分(再次类似于boost对应部分),以及特别是std::asynch
函数。
答案 1 :(得分:0)
我喜欢boost :: thread的设计方式(我在Rouge Wave的线程库中看到了类似的设计)。基本上,通过传递要执行的函数来启动线程,然后可以使用该线程对象来连接该线程。 pthread在设计上非常相似,但boost :: thread更容易使用。