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''的包含函數返回的數據不會被覆蓋。將變量複製到本地堆棧無非是展示如何使用'struct'成員;它可以/應該變成更明智的東西。 –