亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1938 | 回復: 5
打印 上一主題 下一主題

[C++] 管道發(fā)送數(shù)據(jù)不斷申請內(nèi)存,另一邊不斷刪除內(nèi)存,會不會很耗性能? [復制鏈接]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-01-07 11:50 |只看該作者 |倒序瀏覽
  1. void TServer::ReadEvent(Conn *pcon)
  2. {
  3.         if(pcon->is_down==1||pcon->m_Engine==NULL)return;

  4.         char *p_cmd;
  5.         int res;


  6.         while ((res = pcon->m_Engine->ReadPack(&p_cmd))>0)
  7.         {
  8.                 S_CON_INFO s_info;
  9.                 s_info.pcon= pcon;
  10.                 s_info.run_code = 1;
  11.                 s_info.fd=pcon->GetFd();
  12.                 //讀取句柄消息
  13.                 s_info.data_buf = new char[res+1];
  14.                 memcpy(s_info.data_buf, p_cmd, res+1);
  15.                 s_info.data_buf_len=res;
  16.                 int tid = rand()%m_ThreadCount;
  17.                 if(write(m_pThreadInfo[tid].m_notifySendFd, &s_info, sizeof(S_CON_INFO))==-1){
  18.                         printf("管道寫入錯誤====pid:%d\n",tid);
  19.                 }
  20.         }
  21. }
復制代碼
這里s_info.data_buf = new char[res+1]; 不斷new內(nèi)存,管道另一邊就得不斷delete內(nèi)存,是不是很浪費?有沒有更好的辦法
ReadEvent函數(shù)是libevent句柄觸發(fā)的,只要有句柄有消息,就會調(diào)用,while ((res = pcon->m_Engine->ReadPack(&p_cmd))>0)主要負責將這個句柄的消息按照分包原則每個包讀取出來,然后通過管道,向線程池哪里發(fā)送數(shù)據(jù),線程池收到管道數(shù)據(jù)后,先拷貝數(shù)據(jù),然后刪除發(fā)送管道這邊的內(nèi)存,在繼續(xù)處理數(shù)據(jù)羅輯部分。

論壇徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16賽季CBA聯(lián)賽之江蘇
日期:2017-11-27 11:42:3515-16賽季CBA聯(lián)賽之八一
日期:2017-04-12 14:26:2815-16賽季CBA聯(lián)賽之吉林
日期:2016-08-20 10:43:1215-16賽季CBA聯(lián)賽之廣夏
日期:2016-06-23 09:53:58程序設(shè)計版塊每日發(fā)帖之星
日期:2016-02-11 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-02-09 06:20:0015-16賽季CBA聯(lián)賽之上海
日期:2015-12-25 16:40:3515-16賽季CBA聯(lián)賽之廣夏
日期:2015-12-22 09:39:36程序設(shè)計版塊每日發(fā)帖之星
日期:2015-08-24 06:20:002015亞冠之德黑蘭石油
日期:2015-08-07 09:57:302015年辭舊歲徽章
日期:2015-03-03 16:54:15
2 [報告]
發(fā)表于 2016-01-07 14:06 |只看該作者
分配一個固定大小的,里面帶實際大小

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
3 [報告]
發(fā)表于 2016-01-08 11:50 |只看該作者
lxyscls 發(fā)表于 2016-01-07 14:06
分配一個固定大小的,里面帶實際大小
試過,不行啊,因為這邊循環(huán)太快,管道讀取的時候處理第一條的時候,寫管道已經(jīng)把第二條覆蓋了,導致讀的時候數(shù)據(jù)發(fā)送錯誤。

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
4 [報告]
發(fā)表于 2016-01-08 16:28 |只看該作者
自己加一個內(nèi)存池,重復利用

論壇徽章:
1
射手座
日期:2014-08-04 16:49:43
5 [報告]
發(fā)表于 2016-01-08 18:33 |只看該作者
回復 3# jd808


    快速循環(huán)的操作,優(yōu)先考慮 共享內(nèi)存。。

實在需要FIFO的話,    FIFO本身只傳遞地址,  內(nèi)存提前分配固定大小,每次使用標識一下

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
6 [報告]
發(fā)表于 2016-01-09 10:39 |只看該作者
hanzhenlll 發(fā)表于 2016-01-08 18:33
回復 3# jd808
能不能給個列子看看?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP