pthread (POSIX Threads) в visual studio 2010

Я нашел программу Pthread из Интернета, и я хочу запустить ее в visual studio 2010, но я не знаю, как использовать pthread в visual studio. следующая программа, которую я нашел:

#include  #include  #define MAX_SIZE 4096 #define NO_PROCESS 8 typedef double matrix[MAX_SIZE][MAX_SIZE]; int N; /* matrix size */ int maxnum; /* max number of element*/ char *Init; /* matrix init type */ int PRINT; /* print switch */ matrix A; /* matrix A */ double b[MAX_SIZE]; /* vector b */ double y[MAX_SIZE]; /* vector y */ pthread_barrier_t barrier; /* forward declarations */ void work(void*); void Init_Matrix(void); void Print_Matrix(void); void Init_Default(void); int Read_Options(int, char **); int main(int argc, char **argv) { pthread_t threads[NO_PROCESS]; int timestart, timeend, iter; long i; Init_Default(); /* Init default values */ Read_Options(argc, argv); /* Read arguments */ Init_Matrix(); /* Init the matrix */ pthread_barrier_init(&barrier, NULL, NO_PROCESS); for (i = 0; i < NO_PROCESS; i++) pthread_create (&threads[i], NULL, (void *) &work, (void *) i); for (i = 0; i < NO_PROCESS; i++) pthread_join(threads[i], NULL); pthread_barrier_destroy(&barrier); if (PRINT == 1) Print_Matrix(); } void work(void *pId) { int i, j, k; long thread_id = (long)pId; /* Gaussian elimination algorithm */ for (k = 0; k < N; k++) { /* Outer loop */ if (thread_id == (k % NO_PROCESS)) { for (j = k + 1;(j < N); j++) A[k][j] = A[k][j] / A[k][k]; /* Division step */ y[k] = b[k] / A[k][k]; A[k][k] = 1.0; } pthread_barrier_wait(&barrier); /* wait for other threads finishing this round */ for (i = k + 1;(i < N); i++) { if (thread_id == (i % NO_PROCESS)) { for (j = k + 1;(j < N); j++) A[i][j] = A[i][j] - A[i][k] * A[k][j]; /* Elimination step */ b[i] = b[i] - A[i][k] * y[k]; A[i][k] = 0.0; } } pthread_barrier_wait(&barrier); /* wait for other threads finishing this round */ } } void Init_Matrix() { int i, j; printf("\nsize = %dx%d ", N, N); printf("\nmaxnum = %d \n", maxnum); printf("Init = %s \n", Init); printf("Initializing matrix..."); if (strcmp(Init, "rand") == 0) { for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (i == j) /* diagonal dominance */ A[i][j] = (double)(rand() % maxnum) + 5.0; else A[i][j] = (double)(rand() % maxnum) + 1.0; } } } if (strcmp(Init, "fast") == 0) { for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (i == j) /* diagonal dominance */ A[i][j] = 5.0; else A[i][j] = 2.0; } } } /* Initialize vectors b and y */ for (i = 0; i < N; i++) { b[i] = 2.0; y[i] = 1.0; } printf("done \n\n"); if (PRINT == 1) Print_Matrix(); } void Print_Matrix() { int i, j; printf("Matrix A:\n"); for (i = 0; i < N; i++) { printf("["); for (j = 0; j < N; j++) printf(" %5.2f,", A[i][j]); printf("]\n"); } printf("Vector b:\n["); for (j = 0; j < N; j++) printf(" %5.2f,", b[j]); printf("]\n"); printf("Vector y:\n["); for (j = 0; j  0) if (**argv == '-') switch ( *++*argv ) { case 'n': --argc; N = atoi(*++argv); break; case 'h': printf("\nHELP: try sor -u \n\n"); exit(0); break; case 'u': printf("\nUsage: sor [-n problemsize]\n"); printf(" [-D] show default values \n"); printf(" [-h] help \n"); printf(" [-I init_type] fast/rand \n"); printf(" [-m maxnum] max random no \n"); printf(" [-P print_switch] 0/1 \n"); exit(0); break; case 'D': printf("\nDefault: n = %d ", N); printf("\n Init = rand" ); printf("\n maxnum = 5 "); printf("\n P = 0 \n\n"); exit(0); break; case 'I': --argc; Init = *++argv; break; case 'm': --argc; maxnum = atoi(*++argv); break; case 'P': --argc; PRINT = atoi(*++argv); break; default: printf("%s: ignored option: -%s\n", prog, *argv); printf("HELP: try %s -u \n\n", prog); break; } } 

Может кто-нибудь сказать мне, как запустить его в визуальной студии. Я знаю, что должен быть включен какой-то заголовок, но я не знаю, как это сделать.

Пожалуйста, дайте мне знать от начала до конца шаг за шагом. Я начинаю программировать, скажите мне шаг за шагом …

http://sourceware.org/pthreads-win32/

Вышеупомянутая ссылка предназначена для частичной реализации pthreads на Win32. Он немного стар, но он должен выполнять эту работу.

Теперь, когда вы скомпилировали свою программу, вам нужно найти конкретную dll (pthreadVC2.dll) в одном из двух мест:

  • 1) В том же каталоге ваш файл .exe находится в
    ИЛИ ЖЕ
  • 2) C: \ Windows \ system32 (если ваша ОС – 32-битная версия Windows)
    ИЛИ ЖЕ
  • 2) C: \ Windows \ SysWOW64 (если ваша ОС – это 64-битная версия Windows)

Действительно, «C: \ Windows» в приведенных выше примерах должен быть фактическим путем, к которому установлены ваши windows, иногда это указано как% windir% \ system32 или% windir% \ SysWOW64

Здесь можно найти краткое и простое описание (для всех файлов: * .h, * .lib, * .dll).