一、C++ 并发世界
- 同一进程内的所有进程都共用相同的地址空间,且所有线程都能直接访问大部分数据。
- 每个线程都需要独立的栈空间,如果线程太多,就可能耗尽所属进程的可用内存或地址空间。
- 管控线程的函数和类在中声明,而有关共享数据保护的声明则位于别的头文件中。
- 每个线程都需要一个起始函数,新线程从这个函数开始执行。就应用程序的起始线程而言,该函数是main()。对于别的线程,其起始函数需要在std::thread对象的构造函数中指明。
- 新线程启动后,起始线程继续执行。如果起始线程不等待新线程结束,就会一路执行,直到main()结束,甚至很可能直接终止整个程序,新线程根本没有机会启动。这正是要调用join()的原因,该调用会令主线程等待子线程。