| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖
标题:ubuntu环境下的PV原语中的互斥
只看楼主 加入收藏
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
结帖率:78.95%
收藏
已结贴  问题点数:20 回复次数:5 
ubuntu环境下的PV原语中的互斥
程序代码:
#include <stdio.h>
#include <sys/sem.h>
#include <unistd.h>

int p(int semid)
{
    struct sembuf sops;
    sops.sem_op = -1;
    sops.sem_num = 0;
    sops.sem_flg = SEM_UNDO;

    semop(semid, &sops, 1);

    return 0;
}

int v(int semid)
{
    struct sembuf sops;
    sops.sem_op = +1;
    sops.sem_num = 0;
    sops.sem_flg = SEM_UNDO;

    semop(semid, &sops, 1);

    return 0;
}

int sem_init(int semid, int val)
{
    int ret;

    ret = semctl(semid, 0, SETVAL, val);

    return 0;
}

int mutual_exclusive()
{
    int ret;
    int semid;
    pid_t pid;

    semid = semget(IPC_PRIVATE, 1, IPC_CREAT);
    if (semid < 0) {
        perror("semget");
        return -1;
    }

    ret = sem_init(semid, 1);
    if (ret < 0) {
        perror("semctl");
        return -1;
    }
    printf("%d\n", semctl(semid, 0, GETVAL));
    pid = fork();
    if (pid < 0) {
        perror("fork");
        return -1;
    }

    if (pid == 0) {
        while(1) {
            p(semid);
            printf("this is child1\n");
            printf("this is child2\n");
            printf("this is child3\n");
            v(semid);
        }
    } else {
        while(1) {
            p(semid);
            printf("this is parent1\n");
            printf("this is parent2\n");
            printf("this is parent3\n");
            v(semid);
        }
    }

    return 0;
}

int main()
{
    mutual_exclusive();
    return 0;
}





我想要的结果是输出child和parent是3个为一组的输出,但是结果是交叉输出的,没看出问题所在,求指教,谢了
搜索更多相关主题的帖子: ubuntu 
2012-12-25 21:51
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
#include <sys/sem.h>  这是啥语法啊   vc6.0编译不了呢

DO IT YOURSELF !
2012-12-26 12:17
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:7 
http://

推荐你看下咯

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-26 12:22
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:7 
直接用信号量等待吧,PV 这个有时候不靠谱样
2012-12-26 14:53
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
收藏
得分:0 
代码其实没问题,是执行的时候有权限问题要加sudo
2013-01-15 16:35
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
收藏
得分:0 
回复 楼主 kidangel666
请注意我的标题是在ubuntu下面的 你在windows下肯定是不行的啊
2013-01-15 16:36
快速回复:ubuntu环境下的PV原语中的互斥
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036693 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved