當前位置:編程學習大全網 - 源碼下載 - Rocm源代碼

Rocm源代碼

下面是我這學期做的壹個課程設計。

可以參考壹下,應該差不多。

首先,如何創建壹個線程

使用的頭文件

pthread.h

信號量

stdio.h

字符串

定義線程標識

pthread_t

創建線程

pthread_create

對應於作為線程的函數的程序段。

註意力問題

確保進程不會結束(在創建線程後添加壹個死循環)

在線程中添加While(1)語句,這是壹個無限循環,保證進程不會結束。

二、控制線程並發的功能

Sem_t:信號的類型。

Sem_init:初始化信號

Sem_wait:相當於p操作。

Sem_post:相當於v操作。

第三,實現原型系統

父親、母親、兒子和女兒的話題:

桌子上有壹個盤子,壹次只能放壹個水果。爸爸放蘋果,媽媽放橘子,兒子在盤子裏等橘子,女兒在盤子裏等蘋果。分別通過P、V操作和管程實現。

每個線程壹個。

pthread_t父親;父進程

pthread_t母親;母進程

pthread _ t son子過程

pthread_t女兒;子進程

盤子可以用壹個變量來表示。

sem_t空;

每個線程並不是只做壹次,可以是無限次,也可以是有限次。

使用While(1)控制每個線程無限循環。

輸出該線程每次執行的信息。

printf("%s\n ",(char *)arg);通過參數arg輸出相應線程執行信息。

編譯方法

gcc hex.c -lpthread

生成默認的可執行文件a.out

進入。/a.out命令來運行。

查看結果:程序的連續運行表明

父親放進壹個蘋果。

女兒得到壹個蘋果。

媽媽放了壹個橘子。

兒子買個橘子。

媽媽放了壹個橘子。

兒子買個橘子。

……………… ..

四、程序源代碼

# include & ltstdio.h & gt

# include & ltstring.h & gt

# include & ltsemaphore.h & gt

# include & ltpthread.h & gt

sem_t空;//定義信號量

sem _ t applefull

sem _ t orangefull

void * procf(void * arg)//父線程

{

while(1){

SEM _ wait(amp;空);//P操作

printf("%s\n ",(char *)arg);

SEM _ post(& amp;apple full);//V操作

睡眠(7);

}

}

void * procm(void * arg)//母線程

{

while(1){

SEM _ wait(amp;空);

printf("%s\n ",(char *)arg);

SEM _ post(& amp;orange full);

睡眠(3);

}

}

void * procs(void * arg)//子線程

{

while(1){

SEM _ wait(amp;orange full);

printf("%s\n ",(char *)arg);

SEM _ post(& amp;空);

睡眠(2);

}

}

void * procd(void * arg)//守護線程

{

while(1){

SEM _ wait(amp;apple full);

printf("%s\n ",(char *)arg);

SEM _ post(& amp;空);

睡眠(5);

}

}

主()

{

pthread_t父親;//定義壹個線程

pthread_t母親;

pthread _ t son

pthread_t女兒;

SEM _ init(& amp;空,0,1);//信號量初始化

SEM _ init(& amp;applefull,0,0);

SEM _ init(& amp;orangefull,0,0);

pthread _ create(amp;父親,NULL,procf,“父親輸入壹個蘋果。”);//創建壹個線程

pthread _ create(amp;媽媽,NULL,procm,“媽媽輸入壹個橘子。”);

pthread _ create(amp;女兒,NULL,procd,“女兒得到壹個蘋果。”);

pthread _ create(amp;兒子,NULL,procs,“兒子拿個橘子。”);

While(1){} //循環等待

}

  • 上一篇:與源詞相關的公司名稱聽起來不錯。公司名稱怎麽取?
  • 下一篇:如何為JAVA NIO或Netty程序設置網絡通信代理?
  • copyright 2024編程學習大全網