c語言線程設計,c++線程編程

本文目錄一覽:

c語言多線程編程問題

C語言中多線程的實現原理就是線程的原理,本人只了解Linux下面的C,linux下面的線程,不就是進程中的一個控制流么,相對來說代碼很簡單,但是原理卻是很複雜,很難說清,還需要自己詳細學習研究,下面是一個很簡單的例子,哪邊都能找到,自己運行下看看吧

#include pthread.h

#include stdio.h

#include sys/time.h

#include string.h

#define MAX 10

pthread_t thread[2];

pthread_mutex_t mut;

int number=0, i;

void *thread1()

{

printf (“thread1 : I’m thread 1\n”);

for (i = 0; i MAX; i++)

{

printf(“thread1 : number = %d\n”,number);

pthread_mutex_lock(mut);

number++;

pthread_mutex_unlock(mut);

sleep(2);

}

printf(“thread1 :主函數在等我完成任務嗎?\n”);

pthread_exit(NULL);

}

void *thread2()

{

printf(“thread2 : I’m thread 2\n”);

for (i = 0; i MAX; i++)

{

printf(“thread2 : number = %d\n”,number);

pthread_mutex_lock(mut);

number++;

pthread_mutex_unlock(mut);

sleep(3);

}

printf(“thread2 :主函數在等我完成任務嗎?\n”);

pthread_exit(NULL);

}

void thread_create(void)

{

int temp;

memset(thread, 0, sizeof(thread)); //comment1

/*創建線程*/

if((temp = pthread_create(thread[0], NULL, thread1, NULL)) != 0) //comment2

printf(“線程1創建失敗!\n”);

else

printf(“線程1被創建\n”);

if((temp = pthread_create(thread[1], NULL, thread2, NULL)) != 0) //comment3

printf(“線程2創建失敗”);

else

printf(“線程2被創建\n”);

}

void thread_wait(void)

{

/*等待線程結束*/

if(thread[0] !=0) { //comment4

pthread_join(thread[0],NULL);

printf(“線程1已經結束\n”);

}

if(thread[1] !=0) { //comment5

pthread_join(thread[1],NULL);

printf(“線程2已經結束\n”);

}

}

int main()

{

/*用默認屬性初始化互斥鎖*/

pthread_mutex_init(mut,NULL);

printf(“我是主函數哦,我正在創建線程,呵呵\n”);

thread_create();

printf(“我是主函數哦,我正在等待線程完成任務阿,呵呵\n”);

thread_wait();

return 0;

}

C語言多線程實現

多線程隨機選號程序

以下程序運行後看起來比較有意思,像一個隨機選號程序,但不是完全按照問題所說的寫的

可供參考,要改很容易

//多線程隨機選號程序示例

#include

stdio.h

#include

Windows.h

#include

ctime

#include

cstdlib

#include

process.h

bool

g_run

=

true;

//是否運行

void

userInput(void*)

//監視輸入的線程函數

{

while

(true)

{

if

(getchar()==’\n’)

//是否輸入回車

{

g_run

=

!g_run;

//回車運行

回車暫停

}

Sleep(10);

//延遲

}

}

int

main()

{

srand(time(0));

//隨機數種子

_beginthread(userInput,0,NULL);

//開線程

while

(true)

{

if

(g_run)

{

system(“cls”);

//清屏

int

t

=

rand()

%

1000+

1;//1-1000的隨機數

printf(“\n

%d”,t);

//輸出

}

Sleep(50);

//延遲50毫秒

}

return

0;

}

用C語言寫多線程程序

thread_creation.c

gcc thread_creation.c

會在當前目錄下,生成可執行的a.out文件

./a.out

C語言如何創建線程(windows)系統中

下面為C語言調用WIN API實現創建線程:

1,導入windows.h頭文件

2,聲明實現方法DWORD WINAPI ThreadProc1( LPVOID lpParam ) {}

3,在main()方法中調用 CreateThread(NULL,0 ,ThreadProc1,NULL,0,NULL);

要注意的是主線程不能結束,如果主線程結束,則它的子線程也會被殺死。

#include windows.h

#include stdio.h

#includetime.h

DWORD WINAPI ThreadProc1( LPVOID lpParam )

{

int i=0;

time_t timer;

while(1)

{

timer=time(NULL);

printf(“The current time is: %s\n”,asctime(localtime(timer)));

sleep(1);

}

}

void main()

{

int i=0;

//讓主線程進入循環,主線程若退出,子線程1,2會被系統「殺死」

//創建線程1

CreateThread(

NULL, // default security attributes

0, // use default stack size

ThreadProc1, // thread function

NULL, // argument to thread function

0, // use default creation flags

NULL); // returns the thread identifier

for(;;)

{

;

}

}

c語言怎麼創建線程和使用?

進程的生命周期:

[1].創建 — fork 

[2].執行 — a. exec

b.子進程實現代碼邏輯

[3].結束 — exit _exit

殭屍態進程—wait waitpid

孤兒進程

————————————–

進程存在的問題:

(1).進程的創建 — 複製

(時間 和 空間的開銷很大)

(2).進程的運行 — 調度–

pthread_create創建一個線程,thread是用來表明創建線程的ID,attr指出線程創建時候的屬性,我們用NULL來表明使用預設屬性。start_routine函數指針是線程創建成功後開始執行的函數,arg是這個函數的唯一一個參數。表明傳遞給start_routine的參數。

pthread_exit函數和exit函數類似用來退出線程.這個函數結束線程,釋放函數的資源,並在最後阻塞,直到其他線程使用pthread_join函數等待它。然後將*retval的值傳遞給**thread_return.由於這個函數釋放所以的函數資源,所以retval不能夠指向函數的局部變數。

pthread_join和wait調用一樣用來等待指定的線程。下面我們使用一個實例來解釋一下使用方法.在實踐中,我們經常要備份一些文件。下面這個程序可以實現當前目錄下的所有文件備份。

參考資料

CSDN.CSDN [引用時間2018-1-9]

用C語言在windows或者Linux上面,編寫一個多線程程序

#includestdio.h

#includestdlib.h

#includewindows.h

DWORD WINAPI ThreadProc(LPVOID lpParam)

{

int *pt=(int*)lpParam;

printf(“I am tread %d\r\n”,*pt);

}

int main()

{

const int Count=4;

int datas[Count];

DWORD dwThreadId[Count];

HANDLE hThread[Count];

int i;

for(i=0;iCount;i++)

{

datas[i]=i+1;

hThread[i]=CreateThread(NULL,0,ThreadProc,datas[i],0,dwThreadId[i]);

}

WaitForMultipleObjects(Count,hThread,TRUE,INFINITE);

for(i=0;iCount;i++)

{

CloseHandle(hThread[i]);

}

system(“PAUSE”);

return EXIT_SUCCESS;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237553.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:05
下一篇 2024-12-12 12:05

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python線程等待指南

    本文將從多個方面詳細講解Python線程等待的相關知識。 一、等待線程結束 在多線程編程中,經常需要等待線程執行完畢再進行下一步操作。可以使用join()方法實現等待線程執行完畢再…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python兩個線程交替列印1到100

    這篇文章的主題是關於Python多線程的應用。我們將會通過實際的代碼,學習如何使用Python兩個線程交替列印1到100。 一、創建線程 在Python中,我們可以使用Thread…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論