CreateThread позволяет передавать один параметр типа void *
, и процедура потока вызывается с параметром.
Если вы хотите передать аргумент типа T, где sizeof(T) <= sizeof(void *)
, вы можете просто привести ваш аргумент к void *
в вызове CreateThread
и вернуть его к вашему типу в вашей потоковой процедуре.
Но если sizeof(T) > sizeof(void *)
, вам нужно создать структуру, которая будет содержать ваши аргументы. Затем вы передадите указатель на вызов CreateThread
(как void *
).
При передаче указателя на структуру вам необходимо убедиться, что она имеет соответствующий срок службы. Самый простой способ сделать это - выделить структуру в куче перед вызовом CreateThread
, а затем освободить память внутри вашей потоковой процедуры.