23.04.2008, 04:28
общий
это ответ
Здравствуйте, Муратов Радик Анатольевич!
Вернуть напрямую значение из потока не получится, т.к. функция ThreadProc имеет возвращаемый параметр типа DWORD, что не подходит. Но в поток передается параметр, и именно через него можно передать указатель на ваш массив. Т.е. в параллельном потоке создается массив и через параметр передаваемый в функцию потока, возвращается в главный поток. Память выделенную в паралелльном потоке нужно будет освобождать в главном.
Приложение:
#include <stdio.h>#include <windows.h>int size = 10;DWORD WINAPI create_and_fill_array(LPVOID param) { int *a = new int[size]; for(int i=0; i<size; i++) a[i] = i*i; int **ret = (int **)param; *ret = a; return 0;}int main(int argc, char* argv[]) { int *a; HANDLE thread = CreateThread(NULL, 0, create_and_fill_array,(LPVOID)&a, 0, NULL); ::WaitForSingleObject(thread, INFINITE); printf("Array a filled in thread\n"); for(int i=0; i<size; i++) printf("%d ", a[i]); printf("\n"); delete[] a; return 0;}