- 论坛徽章:
- 1
|
- void ReadData(Conn *pcon)
- {
- if(pcon->is_down==-1)return;
- char *p_cmd;
- int res;
- while ((res = pcon->m_Engine->BaseReadPack(&p_cmd))>0)
- {
- S_CON_INFO s_info;
- s_info.pcon= pcon;
- s_info.run_code = 1;
- s_info.fd=pcon->GetFd();
- //读取句柄消息
- s_info.data_buf=p_cmd;
- s_info.data_buf_len=res;
- int tid = rand()%m_ThreadCount;
- if(write(m_pThreadInfo[tid].m_notifySendFd, &s_info, sizeof(S_CON_INFO))==-1){
- printf("管道写入错误====pid:%d\n",tid);
- }
- }
- }
复制代码 p_cmd是pcon里的缓存,已经申请好了内存了,我赋值s_info.data_buf=p_cmd;只是指针赋值,当我同时发送两条数据的时候(while里可能有时候同一个句柄会有很多条数据),第一条就被第二条给覆盖了,管道另一边读到的就是第二个数据,第一个没了。 |
|