怎么用c语言编程 实现创建原语、撤销原语、阻塞原语和唤醒原语

怎么用c语言编程 实现创建原语、撤销原语、阻塞原语和唤醒原语,第1张

下,应该差不多

一、如何建立线程

用到的头文件

(a)pthread.h

(b)semaphore.h

(c) stdio.h

(d)string.h

定义线程标识

pthread_t

创建线程

pthread_create

对应了一个函数作为线程的程序段

注意的问题

要保证进程不结束(在创建线程后加死循环)

在线程中加入While(1)语句,也就是死循环,保证进程不结束。

二、控制线程并发的函数

sem_t:信号量的类型

sem_init:初始化信号量

sem_wait:相当于P操作

sem_post:相当于V操作

三、实现原形系统

父亲、母亲、儿子和女儿的题目:

桌上有一只盘子,每次只能放入一只水果。爸爸专放苹果,妈妈专放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。分别用P,V操作和管程实现

每个对应一个线程

pthread_t father father进程

pthread_t mother mother进程

pthread_t son son进程

pthread_t daughter daughter进程

盘子可以用一个变量表示

sem_t empty

各线程不是只做一次,可以是无限或有限次循环

用While(1)控制各线程无限次循环

输出每次是那个线程执行的信息

printf("%s\n",(char *)arg)通过参数arg输出对应线程执行信息

编译方法

gcc hex.c -lpthread

生成默认的可执行文件a.out

输入./a.out命令运行

查看结果:程序连续运行显示出

father input an apple.

daughter get an apple.

mother input an orange.

son get an orange.

mother input an orange.

son get an orange.

………………..

四、程序源代码

#include <stdio.h>

#include<string.h>

#include <semaphore.h>

#include <pthread.h>

sem_t empty //定义信号量

sem_t applefull

sem_t orangefull

void *procf(void *arg) //father线程

{

while(1){

sem_wait(&empty)//P操作

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

sem_post(&applefull)//V操作

sleep(7)

}

}

void *procm(void *arg) //mother线程

{

while(1){

sem_wait(&empty)

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

sem_post(&orangefull)

sleep(3)

}

}

void *procs(void *arg) //son线程

{

while(1){

sem_wait(&orangefull)

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

sem_post(&empty)

sleep(2)

}

}

void *procd(void *arg) //daughter线程

{

while(1){

sem_wait(&applefull)

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

sem_post(&empty)

sleep(5)

}

}

main()

{

pthread_t father //定义线程

pthread_t mother

pthread_t son

pthread_t daughter

sem_init(&empty, 0, 1) //信号量初始化

sem_init(&applefull, 0, 0)

sem_init(&orangefull, 0, 0)

pthread_create(&father,NULL,procf,"father input an apple.") //创建线程

pthread_create(&mother,NULL,procm,"mother input an orange.")

pthread_create(&daughter,NULL,procd,"daughter get an apple.")

pthread_create(&son,NULL,procs,"son get an orange.")

while(1){} //循环等待

}

另外,站长团上有产品团购,便宜有保证

SEM定义:搜索引擎营销 指通过搜索引擎进行展示和发布满足用户搜索习惯和需求的信息,如百度竞价、百度知道、百度贴吧、百度经验、百度文库、博客、社区、论坛、自媒体等

专注于互联网营销知识分享与交流,可以进行搜索子旭SEM进行详细了解。

��檬�只�男畔⒑屯�缑教宓慕换バ岳锤ㄖ���勘晔迪值囊恢中滦偷氖谐∮��绞健� 1、广义的网络营销 SEM概念的同义词包括:网上营销、互联网营销、在线营销、网络行销等。这等词汇说的都是同一个意思,笼统的说,网络营销就是以互联网为主要手段开展的营销活动。 SEM具有很强的实践性特征,从实践中发现网络营销的一般方法和规律,比空洞的理论讨论更有实际意义。因此,如何定义网络营销其实是以互联网为主要手段开展的营销活动。 SEM具有很强的实践性特征,从实践中发现网络营销的一般方法和规律,比空洞的理论讨论更有实际意义。因此,如何定义网络营销其实并不是最重要的,关键是要理解网络营销的真正意义和目的,也就是充分认识互联网这种新的营销环境,利用各种互联网工具为企业营销活动提供有效的支持。这也是为什么在网络营销研究必须重视网络营销实用方法的原因。 2、狭义的网络营销,狭义的网络营销是指组织或个人基于开放便捷的互联网,对产品、服务所做的一系列经营活动,从而达到满足组织或个人需求的全过程。网络营销是一种新型的商业营销模式。 当今社会市场的竞争日益激烈化,企业为了取得竞争优势,想方设法使用了各种招数来吸引顾客,传统的营销方法已经很难有新颖独特的方法能帮助企业的竞争中出奇制胜了。市场竞争已不再依靠表层的营销手段的竞争,必须在更深层次的经营组织形式上进行竞争。企业的经营者迫切地去寻找变革,以尽可能地降低商品在从生产到销售的整个供应链上所占用的成本和费用比例,缩短运作周期。 网络营销的产生给企业的经营者带来了福音,可谓一举多得。企业开展网络营销,可以节约大量昂贵的店面租金,可以减少库存商品的资金占用,可以使经营规模不受场地限制,可以方便的采集客户信息等等,上述种种都使得企业经营的成本和费用降低,运作周期变短,从根本上增强了企业的竞争优势。 本文由ste| 进行整理发布


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/232417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存