pthread.h в Visual Studio
Установка библиотеки pthread.h в среде Visual Studio
На примере Visual Studio 2012 Express Edition, Windows 7. Воспользуемся ресурсом ftp://sourceware.org/pub/pthreads-win32/dll-latest
- 1. Скачайте все заголовочные *.h файлы из папки include и поместите их в папку include среды Visual Studio.
Папка располагается примерно по такому адресуC:\Program Files\Microsoft Visual Studio 12.0\VC\include
- 2. На ftp сервере перейдите в папку bin, далее в папку с подходящей архитектурой.
Скопируйте в папку bin студии файл pthreadVSE2.dll.
У меня эта папка располагается по адресуC:\Program Files\Microsoft Visual Studio 12.0\VC\bin
- 3. Перейдите в папку lib, далее в папку с вашей архитектурой. Скопируйте файл pthreadVSE2.lib в папку lib студии.
У меня она располагается по адресуC:\Program Files\Microsoft Visual Studio 12.0\VC\lib
Теперь появится возможность добавлять библиотеку pthread.h: Visual Studio увидит её, будет подсвечивать синтаксис и выводить подсказки.
-
4. Создайте пустой проект. Откройте окно «Свойства проекта». Для этого либо кликните правой кнопкой мыши по имени проекта в
Обозревателе решений | Свойства
, либо откройтеПроект | Свойства
.
Во вкладкеСвойства конфигурации | Компоновщик | Ввод
добавьте справа в дополнительные зависимости имя библиотеки pthreadVSE2.lib.

Каждый новый проект потребует этого шага. Для проверки напишем простое приложение
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <conio.h> #define ERROR_CREATE_THREAD -11 #define ERROR_JOIN_THREAD -12 void* helloWorld(void *args) { printf("Hello from thread!\n"); return NULL; } int main() { pthread_t thread; int status; int status_addr; status = pthread_create(&thread, NULL, helloWorld, NULL); if (status != 0) { printf("main error: can't create thread, status = %d\n", status); exit(ERROR_CREATE_THREAD); } printf("Hello from main!\n"); status = pthread_join(thread, (void**)&status_addr); if (status != 0) { printf("main error: can't join thread, status = %d\n", status); exit(ERROR_JOIN_THREAD); } printf("joined with address %d\n", status_addr); _getch(); return 0; }
Вместо pthreadVSE2 можно качать и устанавливать файлы pthreadVC2. Но тогда и в дополнительных зависимостях придётся писать pthreadVC2.lib.
Q&A
Всё ещё не понятно? – пиши вопросы на ящик 
