Cоздания потоков и параметры функции

Рейтинг: 0Ответов: 1Опубликовано: 17.10.2014

Доброго времени суток, начал учить потоки в плюсах. Элементарщину научился делать, но тут вопрос, как на примере кода сделать, чтобы функция печатала строчку задаваемое количество раз?

DWORD WINAPI Func1 (void * param,int size) // сайз
{
    for (int i=0; i < size; i++)
    cout << "SWAG" <<endl;
    return 0;
}
// main
HANDLE thread1=CreateThread(0,0,Func1,0,0,0); // как сюда кинуть параметр?

Подскажите, пожалуйста.

Ответы

▲ 5

Смотрите.

Во-первых, лучше всего перейти на свежую версию компилятора и использовать универсальный std::thread и прогрессивные лямбды вместо платформо-специфического WinAPI:

#include <thread>

std::thread t([size]()
{
    for (int i = 0; i < size; i++)
        std::cout << "SWAG" << std::endl;
});

(Кстати, использовать консольный вывод из разных потоков — не самая лучшая идея.)

Если хотите всё же использовать WinAPI, вам придётся передавать параметр нетипизированным способом — через void*-параметр. Для этого вам придётся выделить нужные данные (параметр) в heap-памяти, передать указатель на них в ThreadProc, там закастить в нужный тип и применить. Не забудьте уничтожить выделенные данные.