为什么线程从未作为C++标准的一部分包含在内?

Ton*_*ion 8 c++ standards multithreading

为什么线程从未作为C++标准的一部分包含在内?首次创建C++标准时它们不存在吗?

Dav*_*ley 12

当前的标准是从1998年开始的.有不同的线程实现,并且没有12年后使用线程的经验.如果C++有一个标准化的线程库,它可能在一些常见的线程实现上运行不佳,并且很可能在将来很难适应.

现在已经十二年了,而且我们对线程的使用方式了解得更多,而且更广泛的使用对它们的标准化产生了更多的兴趣,因此即将推出的C++标准(我希望将在2011年正式发布)将有一个部分在库中的线程上.

  • 我不同意15年来我们对线程的知识或如何使用它们增加了很多.在过去的15年中,线程的所有主要组件都存在并且没有太大变化.现在的区别在于使用线程的能力(多核和多处理器架构很常见)更为主流,因此我们更加强调标准化它们的需要(并使它们易于用于Joe初学者(恕我直言)这不是一个好主意,因为无论我们多少尝试并保护他,乔仍然会挣扎)). (6认同)
  • 实际上,目前的标准是从1998年开始的(虽然它已经在一年之前已经相当固定了.),从2003年开始有一些补充,澄清和修复(TR1).当时有很多关于线程的知识,甚至有过C++线程库.只是C++不是公司驱动的,如果没有人拿起工作,那就没有完成.IIRC,C++ 1x(目前预计明年)的线程化工作也没有很早开始.但最后有几个人拿起了工作,并提出了一些足够好的建议,以便成为讨论的基础. (3认同)

sbi*_*sbi 12

我认为主要原因是

  • 将线程行为指定为语言需要大量的工作和理解,当时没有人可以使用
  • 没有人对一个好的线程API有一个好主意,并且没有一个现有的库似乎足以作为进一步工作的基础
  • 标准化委员会淹没了足够的其他工作(比如将STL纳入标准库)
  • 那个标准已经很晚了; 第一个版本花了十多年的时间才出现,由于"最后一分钟的变化"(std::auto_ptr,STL)而导致相当多的延迟,我认为主要的感觉是更好地将某些东西拿出来,而不是继续等待不可逆转地延迟完美标准; 我想当时大多数人都不认为下一个版本需要很长时间才能完成

在标准被批准之后,由图书馆工作组的成员创建了boost作为库的测试平台,这些库在std lib中是可取的,但是没有足够的时间来制作最终版本.在那里,完成了向C++添加线程支持所需的大部分工作(即发明了一个好的线程库).