来自C#/ Java编程,在程序中创建新线程往往会增加大量开销(例如C#中每个线程1MB)。我很好奇C ++ 11线程引入了什么样的开销。
答案 0 :(得分:8)
C ++在底层实现之上提供了一个相当薄的包装器,导致没有显着的额外开销。实际上,您甚至可以get a handle到底层的OS线程,它将是__gthread_t
,它是g ++的pthread句柄和Visual C++的WINAPI线程句柄。
但是,线程确实有内在开销,因为它们需要由OS调度,包含堆栈等等。
An analysis by Mark Russinovich在Windows下经历了线程创建的限制。这些限制当然是由线程开销引起的,并给出:
答案 1 :(得分:3)