Multithreading
Threads
Threads are the basic building blocks for writing concurrent programs.
Minimise thread creation
How expensive is a thread? Quite expensive! This is the issue behind this best practice. Let me first talk about the usual size of a thread and than about the costs of its creation.
Size
A `std::thread is a thin wrapper around the native thread. This means I’m interested in the size of a Windows thread and a POSIX thread because most of the times they are internally used.
- Windows systems: the post Thread Stack Size gave me the answer: 1 MB.
- POSIX systems: the pthread_create man-page provides me with the answer: 2MB. This is the sizes for the i386 and x86_64 architectures. If you want to know the sizes for further architectures that support POSIX, here are they:
Creation
I didn’t find numbers how much time it takes to create a thread. To get a gut feeling, I made a simple performance test on...