C語言中多線程的簡單例子


    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(時間間隔);來確定。

      新創建的線程什么時候結束?線程間怎么進行通信?線程內部是否能結束自己,外部呢?這些問題接下來研究。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM