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

  免費(fèi)注冊 查看新帖 |

Chinaunix

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

多線程長連接服務(wù)器端,線程資源的回收問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-08-25 16:23 |只看該作者 |倒序?yàn)g覽
背景:主要是為了POS的接入提供服務(wù),POS機(jī)通過海博通的網(wǎng)控器接入。
我要實(shí)現(xiàn)的功能:就是建立一個雙工異步長連接的服務(wù)器端,與海波通的網(wǎng)控器實(shí)現(xiàn)長連接。

功能設(shè)計:1,創(chuàng)建一個服務(wù)器監(jiān)聽,用以接收客戶端的連接(mian函數(shù)所做的操作)
          2,收到客戶端的連接請求后創(chuàng)建一個字進(jìn)程用于建立跟這個客戶端的連接
          3,在字進(jìn)程里創(chuàng)建一個接收線程和一個發(fā)送線程用以處理接收信息和發(fā)送信息
我主要是想,如果在創(chuàng)建的字進(jìn)程里,做發(fā)送或者接收超時設(shè)置,如果超時,就直接exit,退出字進(jìn)程。不知道這樣是否存在問題。因?yàn)閮蓚線程的資源可能都沒有回收,而直接退出進(jìn)程。

int main()
{
     InitSocket(ip, port);//監(jiān)聽
     while(1){
          clisock=accept(svrsock,0,0);
          if(fork = 0){
                  ConnFun();//如果收到一個監(jiān)聽,就創(chuàng)建一個字進(jìn)程用于建立長連接。
          }

     }
}
//創(chuàng)建兩個線程一個用于接收消息,一個用于發(fā)送消息
void ConnFun()
{
             pthread_t tid[2];
        void *pth_join_ret1;
        void *pth_join_ret2;
        int ret;
       
        //創(chuàng)建接收網(wǎng)控器消息的線程
        ret = pthread_create(&tid[0], NULL, doWorker1, NULL);
        if(ret != 0){
                close(clisock);
                exit(-1);
        }
                //創(chuàng)建發(fā)送網(wǎng)控器消息的線程
        ret = pthread_create(&tid[1], NULL, doWorker2, NULL);
        if(ret != 0){
                close(clisock);
                exit(-1);
        }
                ret = pthread_join(tid[0], &pth_join_ret1);
                ret = pthread_join(tid[1], &pth_join_ret2);
}

論壇徽章:
0
2 [報告]
發(fā)表于 2010-08-25 16:30 |只看該作者
要實(shí)現(xiàn)這個我現(xiàn)在有幾個問題:
1,不先收回線程資源,直接exit是否會出現(xiàn)問題。
2,線程超時設(shè)置,我以前一直在做多進(jìn)程編程,多線程不太熟悉,但是一個進(jìn)程內(nèi)肯定是不支持多個SIGALRM信號的。
3,如果我想先回收線程資源,再在主線程里退出,應(yīng)該怎么實(shí)現(xiàn)呢。

論壇徽章:
0
3 [報告]
發(fā)表于 2010-08-25 17:24 |只看該作者
肯定有問題,你來個客戶就創(chuàng)建一個子進(jìn)程,一起來5000個客戶你怎么辦?

論壇徽章:
0
4 [報告]
發(fā)表于 2010-08-25 17:30 |只看該作者
但從進(jìn)程退出考慮我認(rèn)為沒有問題,你的程序沒有分配堆內(nèi)存,不用回收。
進(jìn)程退出了,里面的線程資源會自動回收。
我是這么認(rèn)為的。

論壇徽章:
0
5 [報告]
發(fā)表于 2010-08-25 17:33 |只看該作者
根本就不應(yīng)該這樣設(shè)計,來了一個請求你創(chuàng)建一個子進(jìn)程,然后在子進(jìn)程中又創(chuàng)建2個線程,這么大的開銷,你覺得你的服務(wù)器能抗的住幾個連接,搞不好100都抗不住

論壇徽章:
0
6 [報告]
發(fā)表于 2010-08-25 18:29 |只看該作者
回復(fù) 5# @sky


    那應(yīng)該怎么設(shè)計長連接呢。

論壇徽章:
0
7 [報告]
發(fā)表于 2010-08-25 18:35 |只看該作者
本帖最后由 dayuan555 于 2010-08-25 18:39 編輯

至于壓力方面我倒是不擔(dān)心,因?yàn)槲覇栠^了長連接最多也就6個,因?yàn)榭蛻舳ǖ木W(wǎng)控器只支持6個號碼,如果連接過多只能排隊。

論壇徽章:
0
8 [報告]
發(fā)表于 2010-08-25 22:41 |只看該作者
兄弟們給點(diǎn)意見撒

論壇徽章:
0
9 [報告]
發(fā)表于 2010-08-26 10:57 |只看該作者
你就用一個進(jìn)程搞定就行了,長不長連接跟你起的進(jìn)程數(shù)量沒有關(guān)系。

論壇徽章:
0
10 [報告]
發(fā)表于 2010-08-26 10:59 |只看該作者
多線程也可以注冊一個清理函數(shù),運(yùn)行完畢自己清理掉就OK了。資源共享也比多線程方便。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(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