linux c多線程編程實(shí)例代碼
直接看代碼吧,代碼里有注釋
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#define MAX 3
int number =0;
pthread_t id[2];
pthread_mutex_t mut; //初始化靜態(tài)互斥鎖
void thread1(void)
{
int i;
printf("Hello,I am pthread1!\n");
for (i=0; i<MAX; i++)
{
pthread_mutex_lock(&mut); //此處上鎖,保證number的唯一性
number ++;
printf("Thread1:number = %d\n",number);
pthread_mutex_unlock(&mut);
sleep(1); //linux c下 sleep(minute),里面變量單位是分鐘
}
pthread_exit(NULL); //線程通過(guò)執(zhí)行此函數(shù),終止執(zhí)行。返回是一個(gè)空指針類(lèi)型
}
void thread2(void)
{
int j;
printf("Hello,I'm pthread2\n");
for(j=0; j<MAX; j++)
{
pthread_mutex_lock(&mut);
number ++;
printf("Thread2:number = %d\n",number);
pthread_mutex_unlock(&mut);
sleep(1);
}
pthread_exit(NULL);
}
void thread_create(void)
{
int temp;
memset(&id, 0, sizeof(id));
if(temp = pthread_create(&id[0], NULL, (void *)thread1, NULL)!= 0)
//參數(shù):線程標(biāo)識(shí)符指針 線程屬性 線程運(yùn)行函數(shù)起始地址 運(yùn)行函數(shù)屬性
//創(chuàng)建成功返回 0
printf("Thread 1 fail to create!\n");
else
printf("Thread 1 created\n");
if(temp = pthread_create(&id[1], NULL, (void *)thread2, NULL)!= 0)
printf("Thread 2 fail to create!\n");
else
printf("Thread 2 created!\n");
}
void thread_wait()
{
if(id[0] != 0)
{
pthread_join(id[0], NULL); //等待線程結(jié)束,使用此函數(shù)對(duì)創(chuàng)建的線程資源回收
printf("Thread1 completed!\n");
}
if(id[1] != 0)
{
pthread_join(id[1], NULL);
printf("Thread2 completed!\n");
}
}
int main(void)
{
int i,ret1,ret2;
pthread_mutex_init(&mut, NULL); //動(dòng)態(tài)互斥鎖
printf("Main fuction,creating thread...\n");
thread_create();
printf("Main fuction, waiting for the pthread end!\n");
thread_wait();
return (0);
}
相關(guān)文章
Qt地圖自適應(yīng)拉伸的實(shí)現(xiàn)示例
最近需要寫(xiě)一個(gè)程序,要是讓qt到程序自適應(yīng),本文主要介紹了Qt地圖自適應(yīng)拉伸的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
C語(yǔ)言背包問(wèn)題求解全過(guò)程(貪心方法)
背包問(wèn)題是一個(gè)經(jīng)典的動(dòng)態(tài)規(guī)劃問(wèn)題,而貪心算法是一種常用的解決背包問(wèn)題的方法,這篇文章主要給大家介紹了關(guān)于C語(yǔ)言背包問(wèn)題求解(貪心方法)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
C語(yǔ)言實(shí)現(xiàn)萬(wàn)年歷程序
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)萬(wàn)年歷程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
如何用C寫(xiě)一個(gè)web服務(wù)器之I/O多路復(fù)用
本文主要介紹了如何用C寫(xiě)一個(gè)web服務(wù)器之I/O多路復(fù)用,本次選擇了 I/O 模型的優(yōu)化,因?yàn)樗欠?wù)器的基礎(chǔ),這個(gè)先完成的話,后面的優(yōu)化就可以選擇各個(gè)模塊來(lái)進(jìn)行,不必進(jìn)行全局化的改動(dòng)了。2021-05-05
C++實(shí)現(xiàn)簡(jiǎn)單插件機(jī)制原理解析
這篇文章主要介紹了C++實(shí)現(xiàn)簡(jiǎn)單插件機(jī)制原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02

