LinuxSir.cn,穿越时空的Linuxsir!

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

一个pthread_mutex_t变量初始化问题

[复制链接]
发表于 2006-6-21 10:13:05 | 显示全部楼层 |阅读模式
最近在写一个服务器程序,程序中定义了一个线程共享队列,
struct workqueue{
int fd;
...
pthread_mutex_t  mutex;
pthread_cond_t cond;
};

在一个队列初始化函数中通过地址参数将队列地址传入其中,在初始化mutex,cond变量时报语法错误,错误的语句为pwq->mutex=INITIALIZER;(pwq为结构体workqueue指针)
这是什么原因
发表于 2006-6-21 12:25:19 | 显示全部楼层
Post by gudaoshusheng
最近在写一个服务器程序,程序中定义了一个线程共享队列,
struct workqueue{
int fd;
...
pthread_mutex_t  mutex;
pthread_cond_t cond;
};

在一个队列初始化函数中通过地址参数将队列地址传入其中,在初始化mutex,cond变量时报语法错误,错误的语句为pwq->mutex=INITIALIZER;(pwq为结构体workqueue指针)
这是什么原因


INITIALIZER是个宏定义
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-23 19:03:21 | 显示全部楼层
INITIALIZER是一个结构体常量吧,pqw->mutex是一个结构体变量,这个赋值语句有错吗?
回复 支持 反对

使用道具 举报

发表于 2006-6-25 19:32:32 | 显示全部楼层
试用该函数初始化
#include <pthread.h>
int
pthread_mutex_init(pthread_mutex_t *restrict mutex,
const pthread_mutexattr_t *restrict attr);/* second arg could be NULL if default */
回复 支持 反对

使用道具 举报

发表于 2006-6-25 19:35:08 | 显示全部楼层
statically-allocated mutexes defined constant is
PTHREAD_MUTEX_INITIALIZER;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-29 21:34:51 | 显示全部楼层
是我打错了,是PTHREAD_MUTEX_INITIALIZER
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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