LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 693|回复: 1

奇怪的问题,是不是LINUX的信号量有问题啊

[复制链接]
发表于 2004-12-10 15:07:14 | 显示全部楼层 |阅读模式
这里贴代码看得不好看

到这里看
http://elssann.51.net/queue.h
http://elssann.51.net/queue.c

简单的说,就是我做了一个队列,ABCD线程调用getqueue_status函数阻塞住。E线程调用putqueue_status给队列里放一个东西,然后发出信号灯让A线程返回,但是奇怪的是,在我的程序中,我竟然发现,有时候线程进去队列里取数据的时候,竟然执行到了 getqueue_status函数的这一段,
        else
        {
                *context = NULL;
        }

奇怪啊,莫非这就是所谓的信号灯惊群效应?

补充一个结构
struct queue_handle
{
        int                queue_len;
        sem_t                queue_sem;
        pthread_mutex_t        queue_lock;
        struct eph_context        *context_front;
        struct eph_context        *context_rear;
};
 楼主| 发表于 2004-12-10 15:29:36 | 显示全部楼层
如果说是惊群效应也不对啊。,
我就用A线程getqueue_status
用B线程putqueue_status

结果有时候还是会执行到
else
{
*context = NULL;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表