Если вы используете C / C ++, попробуйте использовать функции потоков среды выполнения C / C ++.
Если вы используете Win32 (или другие не-CRT-функции для создания потоков), CRT может неправильно инициализироваться в новом потоке, вызывая всевозможные проблемы (вы можете прочитать об этом здесь: http://www.codeguru.com/forum/archive/index.php/t-371305.html).
Однако большинство потоковых функций (в CRT, Win32 или pthread) основаны на функциональности для создания потоков, синхронизации потоков и уничтожения потоков. На практике это не всегда так просто.
В прошлом году была тенденция переходить к потокам на основе задач (ну, я так это называю, я не знаю, как называется это официальное название). Вместо того, чтобы запускать поток и затем выполнять в нем некоторую логику, в потоке на основе задач вы создаете задачу, а затем запрашиваете «логику потоков» для ее выполнения.
Системы, поддерживающие этот новый способ работы с потоками:
- Visual Studio 2010 (нам придется подождать несколько дней)
- Строительные блоки Intel Threading
Visual Studio 2010 даже имеет (кажется) специальную логику отладки для отладки «параллельных задач».