3
Да, я знаю, как создать поток SDL.Как отправить дополнительные параметры в поток SDL?
int myfunc(void* data)
{
//my code...
}
SDL_CreateThread* mythread=SDL_CreateThread(myfunc,NULL);
Но что, если я хочу сделать что-то вроде:
int myfunc(void* data,int myparameter1,char myparameter2)
{
//my code...
}
SDL_CreateThread* mythread=SDL_CreateThread(myfunc,NULL,42,'c');
т.е. как создать поток для функции с более чем одним параметров (параметров, за исключением обычного «пустоте * данных») Если это невозможно, вы можете предложить какой-либо метод, с помощью которого я могу передать параметр в поток?
Мне кажется, что либо делать 'malloc' /' free' избыточна , или копирование данных в локальный стек потока. Правильно? – yzt
Кроме того, я не уверен, что нужно подключать потоки SDL или нет (или это нормальная ситуация там), но если это так, вам нужно ограничить выделение кучи или копирование параметров в локальный стек. Это связано с тем, что если вы присоединитесь к дочернему потоку в основном потоке, то время жизни аргументов в стеке основного потока будет гарантировано охватывать время жизни дочернего потока. – yzt
@yzt: распределение кучи состояло в том, чтобы гарантировать, что данные не будут перезаписаны в случае, если включенная функция, которая вызвала 'SDL_CreateThread'' return', перед тем, как поток просмотрел ее. Копирование переменных в локальный стек было не более чем показателем того, как использовать члены 'struct'; он может/должен быть изменен на нечто более разумное. –