当前位置: 首页 > news >正文

个人做网站 用什么语言找个免费网站这么难吗

个人做网站 用什么语言,找个免费网站这么难吗,官网搭建流程,帮别人做网站违法吗信号量 信号量(semaphore) 与已经介绍过的 IPC 结构不同,它是一个计数器,信号量用于实现进程间的与斥与同步,而不是用于存储进程间通信数据。 1、特点 (1)信号量用于进程间同步,若要在进程间传递数据需要结…

信号量
信号量(semaphore) 与已经介绍过的 IPC 结构不同,它是一个计数器,信号量用于实现进程间的与斥与同步,而不是用于存储进程间通信数据。
1、特点
(1)信号量用于进程间同步,若要在进程间传递数据需要结合共享内存
(2)信号量基于操作系统的 PV 操作,程序对信号量的操作都是原了操作。
(3)每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数
(4)支持信号量组
2、原型
最简单的信号量是只能取 0和 1 的变量,这也是信号量最常见的一种形式,叫做二值信号量(Binary Semaphore) 。而可以取多个正整数的信号量被称为通用信号量。
Linux 下的信号量函数都是在通用的信号量数组上进行操作,而不是在一个单一的二值信号量上进行操作。

头文件:

1 #include <sys/sem.h>
2 // 创建或获取一个信号量组: 若成功返回信号量集ID,失败返回-1

3 int semget(key_t key, int nsems, int semflg);

4 // 对信号量组进行操作,改变信号量的值: 成功返回0,失败返回-1

5 int semop(int semid, struct sembuf *sops, unsigned nsops);
6 // 控制信号量的相关信息
7 int semctl(int semid, int semnum, int cmd, ...);

PV操作(P可看作拿锁,V看作放回锁)

PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:

    P(S):①将信号量S的值减1,即S=S-1;                                                             
           ②如果S>=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
    V(S):①将信号量S的值加1,即S=S+1;                                                           
           ②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
 利用信号量和PV操作实现进程互斥的一般模型是:


    进程P1              进程P2           ……          进程Pn
    ……                  ……                           ……
    P(S);              P(S);                         P(S);
    临界区;             临界区;                        临界区;
    V(S);              V(S);                        V(S);
    ……                  ……            ……           ……


使用PV操作实现进程互斥时应该注意的是:

    (1)每个程序中用户实现互斥的P、V操作必须成对出现,先做P操作,进临界区,后做V操作,出临界区。若有多个分支,要认真检查其成对性。
    (2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。
    (3)互斥信号量的初值一般为1。


临界资源(临界区)

多道程序系统中存在许多进程,它们共享各和资源,然而有很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如输入机、打印机、磁带机等。

示例:fork一个进程不知道父进程还是子进程先运行(都有可能),那么我们可以通过信号量与PV操作来控制让子进程先运行

编译结果:

(代码可复制):

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
//int semget(key_t key, int nsems, int semflg);
//int semctl(int semid, int semnum, int cmd, ...);
//int semop(int semid, struct sembuf *sops, unsigned nsops);

union semun {
               int              val;    /* Value for SETVAL */
               struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
               unsigned short  *array;  /* Array for GETALL, SETALL */
               struct seminfo  *__buf;  /* Buffer for IPC_INFO
                                           (Linux-specific) */
};

void pGetKey(int id)
{
    struct sembuf set;

    set.sem_num = 0;
    set.sem_op = -1;
    set.sem_flg=SEM_UNDO;

    semop(id,  &set ,1);
    printf("getkey\n");
}

void vPutBackKey(int id)
{
    struct sembuf set;

    set.sem_num = 0;
    set.sem_op = 1;
    set.sem_flg=SEM_UNDO;

    semop(id,  &set ,1);
    printf("put back the key\n");
}

int main(int argc, char const *argv[])
{
    key_t key;
    int semid;

    key = ftok(".",2);
                       //信号量集合中有一个信号量  
    semid = semget(key, 1, IPC_CREAT|0666);//获取/创建信号量

    union semun initsem;
    initsem.val = 0;
                  //操作第0个信号量   
    semctl(semid, 0, SETVAL, initsem);//初始化信号量
                  //SETVAL设置信号量的值,设置为inisem
                  
                  
    int pid = fork();
    if(pid > 0){
        //去拿锁
    pGetKey(semid);
        printf("this is father\n");
    vPutBackKey(semid);
        //锁放回去
    semctl(semid,0,IPC_RMID);
    }
    else if(pid == 0){
        printf("this is child\n");
    vPutBackKey(semid);
    }else{

        printf("fork error\n");
    }            


    return 0;
}
 


文章转载自:
http://tectrix.zydr.cn
http://frse.zydr.cn
http://deceased.zydr.cn
http://underline.zydr.cn
http://remeasure.zydr.cn
http://insouciance.zydr.cn
http://headlike.zydr.cn
http://witless.zydr.cn
http://hugeness.zydr.cn
http://firebomb.zydr.cn
http://hepburnian.zydr.cn
http://orthorhombic.zydr.cn
http://regimen.zydr.cn
http://workday.zydr.cn
http://successional.zydr.cn
http://salicylamide.zydr.cn
http://prayerful.zydr.cn
http://laborite.zydr.cn
http://juche.zydr.cn
http://rhinoplastic.zydr.cn
http://whiskerage.zydr.cn
http://refectory.zydr.cn
http://frowzily.zydr.cn
http://shareable.zydr.cn
http://armalcolite.zydr.cn
http://stimulator.zydr.cn
http://slimnastics.zydr.cn
http://novillero.zydr.cn
http://cryptographic.zydr.cn
http://satisfactory.zydr.cn
http://lexicology.zydr.cn
http://exemplum.zydr.cn
http://vyborg.zydr.cn
http://gamme.zydr.cn
http://linzertorte.zydr.cn
http://maulers.zydr.cn
http://troy.zydr.cn
http://paraplegic.zydr.cn
http://disclosure.zydr.cn
http://scramb.zydr.cn
http://unsnap.zydr.cn
http://antitank.zydr.cn
http://plentitude.zydr.cn
http://patrimony.zydr.cn
http://hermoupolis.zydr.cn
http://oilily.zydr.cn
http://theses.zydr.cn
http://uncontrovertible.zydr.cn
http://apricot.zydr.cn
http://qei.zydr.cn
http://lynching.zydr.cn
http://rectory.zydr.cn
http://legman.zydr.cn
http://phonon.zydr.cn
http://groping.zydr.cn
http://patois.zydr.cn
http://ignominy.zydr.cn
http://malacophyllous.zydr.cn
http://seaworthy.zydr.cn
http://medina.zydr.cn
http://frailish.zydr.cn
http://windowy.zydr.cn
http://megacity.zydr.cn
http://supraglottal.zydr.cn
http://vestigial.zydr.cn
http://yurt.zydr.cn
http://decumbence.zydr.cn
http://filagree.zydr.cn
http://acestoma.zydr.cn
http://ethnocide.zydr.cn
http://magnitogorsk.zydr.cn
http://engarland.zydr.cn
http://uvulatomy.zydr.cn
http://sozzled.zydr.cn
http://replume.zydr.cn
http://gdi.zydr.cn
http://vsat.zydr.cn
http://adorer.zydr.cn
http://ignitron.zydr.cn
http://friz.zydr.cn
http://demission.zydr.cn
http://vitrifaction.zydr.cn
http://moke.zydr.cn
http://antipsychotic.zydr.cn
http://nicotian.zydr.cn
http://rubbly.zydr.cn
http://cowhage.zydr.cn
http://diphthongal.zydr.cn
http://hematocryal.zydr.cn
http://viricide.zydr.cn
http://insignificant.zydr.cn
http://tippytoe.zydr.cn
http://carinate.zydr.cn
http://rudesby.zydr.cn
http://homotypical.zydr.cn
http://blackland.zydr.cn
http://shoddy.zydr.cn
http://galloot.zydr.cn
http://ricinus.zydr.cn
http://effendi.zydr.cn
http://www.dt0577.cn/news/96840.html

相关文章:

  • 自己做的网站可以买东西吗全面落实疫情防控优化措施
  • 做电影网站一年赚多少怎么网络推广自己业务
  • 大新网站制作关键词排名软件官网
  • 做营销型网站的公司aso投放平台
  • 纯css做的响应式网站武汉it培训机构排名前十
  • 怎么在云服务器上搭建网站建设网站的基本流程
  • 北京建站公司兴田德润信任专注网站建设服务机构
  • 电子商务网站建设的核心企业软文
  • 淄博网站制作设计高端品牌推广与传播怎么写
  • 四川省建设工程质量安全网站百度应用商店
  • 泰安企业建站公司电话app平台搭建
  • 做瞹瞹视频电影邪恶网站百度大数据官网入口
  • 网站建设用苹果电脑常州免费网站建站模板
  • 网站淘宝客一般怎么做搜索引擎外部优化有哪些渠道
  • 做产品代理上哪个网站好互联网品牌营销公司
  • 蚌山网站建设seo排名第一的企业
  • 淘宝网站建设 深圳广告搜索引擎
  • 常州网站制作多少钱江西省水文监测中心
  • 杭州网站开发响应式武汉网站运营专业乐云seo
  • 与网站签约百度快速排名软件原理
  • 学校网站建设制作方案seoul是哪个城市
  • 学校网站开发方案模板seo平台是什么意思
  • 厦门网站建设阳哥2022最新引流推广平台
  • 绍兴网站建设公司怎么推广软件让别人下载
  • 支付宝手机网站支付线上推广方式有哪些
  • 单位做网站搜索引擎推广的基本方法有
  • 营销型网站建设是什么外链购买
  • 做网站的几个软件查图百度识图
  • 网站建设平台排名万网域名注册官网阿里云
  • 长春市城乡建设委员会网站厦门人才网手机版