semwait
Baci定理
C语言中的平台
BACI是一个可以编写并发程序的环境,在这种并行的编译环境中,可以把BACI中的一些语句嵌入到C++,C,Java等高等程序中,使程序可以并行执行。
基本介绍
BACI提供了一个可以编写并发程序的环境,在这个平台上,我们可以很容易的模拟程序的并发执行。
基于C++的BACI语法(C—BACI Compiler)该语法结构是在C++语法结构的基础上,增加一些并发语句扩展而来,一下是一些常用的并发语句
1. cobegin函数
在BACI系统中,并发进程与并发线程同步,多个进程可以并发的在cobegin 块中来并发执行,该函数必须在主函数中,语法结构为:cobegin {
proc1(...);proc2(...);. . . . procN(...);}
其中每个进程并发随机执行,每次执行的顺序可能会不一样,当所有的进程接受后,该函数结束。
2. Semaphores/Binarysem
信号量的(Semaphores)机制可以更方便的实现进程同步,Semaphores是一种如C中”int”一样的类 型,可以用来定义信号量类型的变量,Binarysem是一种二进制信号量,它所定义的变量只能取1或 0,用来表示互斥。
1).信号量的声明和初始化semaphores a;binarysem s;
上面声明了两个信号量a,b,其中b为二进制信号量信号量按如下方式初始化:
Initialsem(semaphores , interger);
Initialsem(binarysem , 0/1);
2)P(wait)/V(signal)函数强大的PV操作与信号量一次很方便的解决了并发进程同步与互斥问题
函数原型:
void p(semaphores &s); or void wait(semaphores &s);
void v(semaphores &s); or void signal(semaphores &s);
函数说明:
p(sem): 如果sem > 0,则sem减1,调用P的进程可以继续执行,如果sem=0,则该进程阻塞,该函数操作是原子性的.v(sem): 如果v=0,或有进程阻塞,则将其唤醒,如果没有进程等待,将sem加1,在任何时候调用v的进程可以继续执行,其操作也是原子的.
3.atomic
atomic关键字定义了原子操作,即该函数操作不可剥夺,每次只能一个进程访问用法:在要原子执行的函数前加atomic即可,如:atomic int sum(){. . . ..}
则sum()函数就可以原子操作了
4.void suspend(void)suspend函数将调用的线程挂起
5.void revive (int process_number)
该函数用于唤醒某个进程,其进程号为process_number
相关文章
- 10-06 什么是啤酒花?啤酒花是什么植物
- 10-06 什么是就业证明?具体什么是就业证明?
- 10-06 联合国的英文缩写是什么
- 10-06 勾姓氏怎么读(勾姓)
- 10-06 可口可乐苏打水(可乐苏打水图片)
- 10-06 富士s9600(富士s9600拆机)
- 10-06 蛇年出生的女人梦见蛇有什么寓意呢?属蛇的女人梦见蛇
- 10-06 已婚女人梦见蛇代表什么?已婚女人梦见蛇代表什么?
- 10-06 女人梦见一条大蛇是什么意思?女人梦见大蛇是什么意思
- 10-06 茉珂胶囊水是哪个国家的
- 10-06 看淡一切的句子简短
- 10-06 形容心情极差的句子
- 10-06 SCI论文润色与翻译攻略
- 10-06 两次担心被“毙”的论文终于登顶Science
- 10-06 连Science编辑都帮忙“插队”,“拉索”再发重
- 10-06 东石乡2023-08-07天气预报(湖南、常德、理
- 10-06 格雅手表国内排第几 格雅手表属于什么档次?
- 10-06 娇子龙凤呈祥多少钱一包
- 10-06 小土元在山西吕梁圆了老张的创业梦
- 10-06 重庆万盛水蛭养殖势头良好
- 最近发表