2月初的時候接到一個需求,簡單點說就是做個動畫。
運用多線程的技術,當動畫啟動的時候,不影響其他畫面的表示和押鍵響應。
A 線程啟動后,在某個階段啟動了B線程。
A這里使用main()函數,B這里使用讓動畫'動'起來的線程animation,那么可以這么做,直接看代碼。
#include <stdio.h>
#include <windows.h>
DWORD WINAPI animation();
int main()
{
char endFlag = 0;
CreateThread(
NULL // default security attributes
,0 // use default stack size
,animation // thread function
,NULL // argument to thread function
,0 // use default creation flags
,NULL); // returns the thread identifier
while (1){
int i;
printf ("A還在運行中!!!\n\n\n");
for(i = 0; i < 200000000; i++){
;
}
}
return 0;
}
DWORD WINAPI animation()
{
int pic[4] = {1,2,3,4};
int i = 0;
printf ("在這里進行圖片切換!\n");
while (1){
int j = 0;
if (i < 4){
int currentPic = pic[i];
printf ("當前是第%d幀\n",currentPic);
i++;
for(j = 0; j < 200000000; j++){
;
}
} else if (i >= 4) {
i = 0;
}
}
}
在main()里面有一個for(i = 0; i < 200000000; i++){;},在真實的項目中,這里的大括號中多用來進行押鍵的回調函數,這樣主線程永遠不會退出。在animation函數中,有一個for(j = 0; j < 200000000;j++){;},真實項目中,這里一般是計算你動畫要動多快的時間,使用sleep(時間間隔);來確定。
新創建的線程什么時候結束?線程間怎么進行通信?線程內部是否能結束自己,外部呢?這些問題接下來研究。
