- 论坛徽章:
- 0
|
在某个结构体中定义了一把线程锁,在加锁前初始化,然后加锁 ,报了 extern.c:182:24: 错误: expected expression before ‘{’ token的编译错误,注释掉初始化那句编译错误消失。求原因
struct usr_item{
pthread_mutex_t lock;
uint32_t dwteid;
uint32_t newdwteid;// 用于更新流程
uint32_t upteid;
uint32_t cgsnip;
uint32_t usr_ip;
uint8_t msisdn[LEN_MSISDN+1];
uint8_t imsi[LEN_IMSI+1];
uint8_t upd_ind;
uint8_t dreq_finish_ind;
uint32_t idx1; //记录三张表中在tableI的下标
uint32_t idx2;//记录在三张表中tableII的下标
uint32_t idx3;//记录在三张表中tableIII的下标
};
在此处对共享的结构体加锁赋值
// 注 ptmp->pdata 是通过hash查找返回的usr_item结构体的地址。
ptmp->pdata->lock = PTHREAD_MUTEX_INITIALIZER;//错误报在这一行,错误信息如上所述
LOCK_P(ptmp->pdata);
ptmp->pdata->ggsnip = ies->cgsnip;
ptmp->pdata->usr_ip = ies->usr_ip;
ptmp->pdata->upteid = ies->cteid;
ptmp->pdata->upd_ind = 0;
ptmp->pdata->dreq_finish_ind = 0;
slog_debug(" usr_ip=%x",ies->usr_ip);
UNLOCK_P(ptmp->pdata);
*下面是 加锁 解锁的宏
#define LOCK_H(h,x)\
pthread_mutex_lock(&((h)->pmem[(x)].lock))
#define UNLOCK_H(h,x)\
pthread_mutex_unlock(&((h)->pmem[(x)].lock))
#define LOCK_P(pdata)\
pthread_mutex_lock(&((pdata)->lock))
#define UNLOCK_P(pdata)\
pthread_mutex_unlock(&((pdata)->lock))
|
|