Как можно убедиться, что параметр потока все еще будет актуальным, когда начнется поток?Актуальность темы темы
ситуация 1:my_thread
была создана, но param
изменилась сразу же после его создания. Ожидалось бы my_thread
, имеющее param_ptr
, что указывает на 56
, но теперь оно соответствует 89
.
DWORD WINAPI my_thread(LPVOID param_ptr);
int param = 56;
CreateThread(NULL, NULL, my_thread, ¶m, NULL, NULL);
param = 89;
ситуация 2:my_thread
был создан, но param
больше не существует, так как create_my_thread
уже закрыта.
DWORD WINAPI my_thread(LPVOID param_ptr);
void create_my_thread(int param)
{
CreateThread(NULL, NULL, my_thread, ¶m, NULL, NULL);
}
спасибо хорошее решение! – Ivars
Я не поклонник ручного управления памятью (новый/удалить), но есть случаи, когда он используется. – stefaanv
BTW: вы можете сделать исключение и передать ints, отбросив его в LPVOID, но я не сторонник, потому что это все еще исключение, и могут быть проблемы с переносимостью, а затем правило всегда удалять параметры в функции потока слабее , – stefaanv