两则程序:
1.
int Wave_Create(HWND hWnd)
{
pthread_t thread1;
CreateThreadForMainWindow (&thread1,NULL,(void*)&WaveMain,(void*)&hwnd);
}
2.
int Wave_Create(HWND hWnd)
{
pthread_t thread1;
HWND* phwnd;
phwnd =malloc(sizeof(phwnd));
if(NULL == phwnd)
printf("malloc fail!\n");
*phwnd=hWnd;
CreateThreadForMainWindow (&thread1,NULL,(void*)&WaveMain,(void*)phwnd);
}
注:CreateThreadForMainWindow ()是minigui里创建线程的函数,同pthread_create().
这两则程序,第一个在PC上跑OK,在板子上出错;第二个在PC上和板子上均OK。
总结:线程参数传递,最好用malloc分配的空间或者静态变量,不然有可能子线程取的时候,空间已经释放了,程序运行不安全。
阅读(1569) | 评论(0) | 转发(0) |