Несколько аргументов для функции CreateThread

Когда я использую метод CreateThread API, что мне нужно делать, когда я хочу передать более одного параметра, где передается LPVOID lpParameter?

2 ответа

Решение

Вы можете создать структуру, которая содержит все соответствующие данные и передать указатель на экземпляр этой структуры (заполненный соответствующими параметрами) для CreateThread()

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

Поместите эти аргументы в структуру, расположенную в куче, и передайте адрес структуры в LPVOID параметр. Ваша функция потока может затем привести LPVOID на указатель на структуру и считывать параметры.

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

Другие вопросы по тегам