青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 7  文章 - 6  trackbacks - 0
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(1)

隨筆檔案

文章分類

搜索

  •  

積分與排名

  • 積分 - 33128
  • 排名 - 615

最新評論

閱讀排行榜

評論排行榜

To understand the backlog argument, we must realize that for a given listening socket, the kernel maintains two queues :
要明白backlog參數(shù)的含義,我們必須明白對于一個listening socket,kernel維護者兩個隊列:

1.An incomplete connection queue, which contains an entry for each SYN that has arrived from a client for which the server is awaiting completion of the TCP three-way handshake. These sockets are in the SYN_RCVD state .
1.一個未完成連接的隊列,此隊列維護著那些已收到了客戶端SYN分節(jié)信息,等待完成三路握手的連接,socket的狀態(tài)是SYN_RCVD

2.A completed connection queue, which contains an entry for each client with whom the TCP three-way handshake has completed. These sockets are in the ESTABLISHED state
2.一個已完成的連接的隊列,此隊列包含了那些已經(jīng)完成三路握手的連接,socket的狀態(tài)是ESTABLISHED

The backlog argument to the listen function has historically specified the maximum value for the sum of both queues.
backlog參數(shù)歷史上被定義為上面兩個隊列的大小之和

Berkeley-derived implementations add a fudge factor to the backlog: It is multiplied by 1.5
Berkely實現(xiàn)中的backlog值為上面兩隊列之和再乘以1.5

When a SYN arrives from a client, TCP creates a new entry on the incomplete queue and then responds with the second segment of the three-way handshake: the server's SYN with an ACK of the client's SYN (Section 2.6). This entry will remain on the incomplete queue until the third segment of the three-way handshake arrives (the client's ACK of the server's SYN), or until the entry times out. (Berkeley-derived implementations have a timeout of 75 seconds for these incomplete entries.)
當客戶端的第一個SYN到達的時候,TCP會在未完成隊列中增加一個新的記錄然后回復給客戶端三路握手中的第二個分節(jié)(服務(wù)端的SYN和針對客戶端的ACK),這條記錄會在未完成隊列中一直存在,直到三路握手中的最后一個分節(jié)到達,或者直到超時(Berkeley時間將這個超時定義為75秒)

If the queues are full when a client SYN arrives, TCP ignores the arriving SYN (pp. 930–931 of TCPv2); it does not send an RST. This is because the condition is considered temporary, and the client TCP will retransmit its SYN, hopefully finding room on the queue in the near future. If the server TCP immediately responded with an RST, the client's connect would return an error, forcing the application to handle this condition instead of letting TCP's normal retransmission take over. Also, the client could not differentiate between an RST in response to a SYN meaning "there is no server at this port" versus "there is a server at this port but its queues are full."
如果當客戶端SYN到達的時候隊列已滿,TCP將會忽略后續(xù)到達的SYN,但是不會給客戶端發(fā)送RST信息,因為此時允許客戶端重傳SYN分節(jié),如果返回錯誤信息,那么客戶端將無法分清到底是服務(wù)端對應端口上沒有相應應用程序還是服務(wù)端對應端口上隊列已滿這兩種情況

posted @ 2010-02-07 19:43 許海斌 閱讀(18834) | 評論 (2)編輯 收藏

        今天看到有人在問這個問題,寫了下代碼,標準庫分離了算法和數(shù)據(jù)結(jié)構(gòu),按照這個框架寫程序確實比較方便,個人認為熟讀和透徹理解標準庫源碼是每個想成為資深c++程序員的必修課,就框架結(jié)構(gòu)而論,stl很好的分離了算法和數(shù)據(jù)結(jié)構(gòu),就算法而論,標準庫里有很多常見算法的經(jīng)典實現(xiàn),所以有非常高的研究價值。

#include <iostream>
#include 
<stddef.h>
#include 
<stdlib.h>
#include 
<string>
#include 
<iterator>
#include 
<algorithm>
#include 
<vector>

using namespace std;

template 
<typename InputIterator1, typename InputIterator2, typename OutputIterator>
OutputIterator delete_intersection(InputIterator1 first1, InputIterator1 last1, 
         InputIterator2 first2, InputIterator2 last2, OutputIterator dest) 
{
    
while (first1 != last1 && first2 != last2) {
        
if (*first1 > *first2) {
            
*dest = *first2;
            
++first2;
            
++dest;
        }
 else if (*first1 < *first2) {
            
*dest = *first1;
            
++first1;
            
++dest;
        }
 else {
            
++first1;
            
++first2;
        }

    }


    
for (;first2 != last2; ++first2) *dest = *first2;

    
return dest;
}


int main() {
    
int a[] = {1,1,2,2,5,6,9,9};
    
int b[] = {1,2,3,4,4,6,7,8,9,9,9,10};

    vector
<int> vc;

    delete_intersection(a, a 
+ sizeof(a)/sizeof(a[0]), b, b + sizeof(b)/sizeof(b[0]), back_inserter(vc));

    std::copy(a, a 
+ sizeof(a)/sizeof(a[0]), ostream_iterator<int>(cout, ",")); 
        cout 
<< endl;

    std::copy(b, b 
+ sizeof(b)/sizeof(b[0]), ostream_iterator<int>(cout, ",")); 
        cout 
<< endl;

    std::copy(vc.begin(), vc.end(), ostream_iterator
<int>(cout, ",")); 
        cout 
<< endl;

    ::system(
"PAUSE");
    
return EXIT_SUCCESS;

}
posted @ 2009-03-05 18:56 許海斌 閱讀(1099) | 評論 (4)編輯 收藏
boost的線程庫不能強行終止,所以通過time_wait可以讓其自然的結(jié)束

 1
 #include <iostream>
 2 #include <boost/thread/thread.hpp>
 3 #include <boost/thread/mutex.hpp>
 4 #include <boost/thread/condition.hpp>
 5 #include <boost/date_time/posix_time/posix_time.hpp>
 6 
 7 using namespace std;
 8 using namespace boost;
 9 
10 boost::mutex test_mutex;
11 boost::condition_variable test_condition;
12 
13 void test() {
14 
15     for (;;) {
16         
17         boost::mutex::scoped_lock lock(test_mutex);
18         if (test_condition.timed_wait(lock, get_system_time() + posix_time::seconds(3))) {
19             cout << "成功接收到通知" << endl; //這里加個break就結(jié)束了
20         } else {
21             cout << "沒有等待到通知" << endl;
22         }
23 
24     }
25 }
26 
27 int main() {
28 
29     boost::thread test_thread(test);
30 
31     for (;;) {
32         ::system("PAUSE");
33         cout << "開始發(fā)送通知" << endl;
34         test_condition.notify_one();
35     }
36 
37 }

posted @ 2009-02-19 17:18 許海斌 閱讀(5133) | 評論 (0)編輯 收藏
在泛型編程中,對于一個concept的一系列modeling,尤其是這些modeling中還有c++基本類型的時候,如果要抽取其特性,可以用一個traits類來解決,traits的名稱可命名為concept名稱_traits,對于其中的基本類型的traits可以用類模板的偏特化實現(xiàn)。
posted @ 2009-02-09 17:59 許海斌 閱讀(1549) | 評論 (0)編輯 收藏

實現(xiàn)代碼:

    typedef enum { UNIQUE_LOCK, SHARED_LOCK } LockType;

template<LockType lt>
class shared_lock;

template 
<>
class shared_lock<UNIQUE_LOCK>private boost::noncopyable {
public:
    shared_lock(boost::shared_mutex
& sm): sm_(sm) sm_.lock(); }
    
~shared_lock() { sm_.unlock(); }
private:
    boost::shared_mutex
& sm_;
}
;

template 
<>
class shared_lock<SHARED_LOCK>private boost::noncopyable {
public:
    shared_lock(boost::shared_mutex
& sm): sm_(sm) sm_.lock_shared(); }
    
~shared_lock() { sm_.unlock_shared(); }
private:
    boost::shared_mutex
& sm_;
}
;



調(diào)用方式:

    boost::shared_mutex session_mutex_;

//獨占鎖定
shared_lock<UNIQUE_LOCK> lock(session_mutex_);

//共享鎖定
shared_lock<SHARED_LOCK> lock(session_mutex_);


http://m.shnenglu.com/thisisbin/archive/2009/01/21/72417.html 一文 single-write/multi-read 就可以應用這種RAII風格的共享鎖實

posted @ 2009-01-22 10:22 許海斌 閱讀(1391) | 評論 (0)編輯 收藏
    程序中幾個線程一起往控制臺寫入log_info,但是可以很清楚的看到begin or write_process不會同時連續(xù)的出現(xiàn),而且在begin of write_process和end of write_process之間肯定不會出現(xiàn)begin of read_process或者end of read_process。但是begin of read_process卻會在控制臺上連續(xù)出現(xiàn),這說明在同一時刻只有一個write_prcess在運行,但是wrte_process沒有運行的時候,會有多個read_process并發(fā)運行。

 1 #include <iostream>
 2 
 3 #include <boost/thread/thread.hpp>
 4 #include <boost/thread/shared_mutex.hpp>
 5 
 6 using namespace std;
 7 using namespace boost;
 8 
 9 boost::shared_mutex shr_mutex;
10 
11 /// 這個是輔助類,能夠保證log_info被完整的輸出
12 class safe_log {
13 public:
14     static void log(const std::string& log_info) {
15         boost::mutex::scoped_lock lock(log_mutex);
16         cout << log_info << endl;
17     }
18 
19 private:
20     static boost::mutex log_mutex;
21 };
22 
23 boost::mutex safe_log::log_mutex;
24 
25 void write_process() {
26     shr_mutex.lock();
27     safe_log::log("begin of write_process");
28     safe_log::log("end of write_process");
29     shr_mutex.unlock();
30 }
31 
32 void read_process() {
33     shr_mutex.lock_shared();
34     safe_log::log("begin of read_process");
35     safe_log::log("end of read_process");
36     shr_mutex.unlock_shared();
37 }
38 
39 int main() {
40 
41     thread_group threads;
42     for (int i = 0; i < 10++ i) {
43         threads.create_thread(&write_process);
44         threads.create_thread(&read_process);
45     }
46 
47     threads.join_all();
48 
49     ::system("PAUSE");
50 
51     return 0;
52 }

posted @ 2009-01-21 13:58 許海斌 閱讀(2678) | 評論 (0)編輯 收藏

1、安裝stlport,參考文章:http://www.cnblogs.com/DonLiang/archive/2007/10/13/923143.html
如果是DEBUG模式請在項目的屬性=>配置屬性=>c/c++=>命令行的附加選項增加/D_STLP_DEBUG

2、boost_1_37_0\tools\jam\stage下運行build.bat編譯生成bjam.exe并拷貝到boost根目錄

3、修改配置文件boost_1_37_0\tools\build\v2\user-config.jam,將兩個stlport選項打開

4、vs2005命令提示下編譯命令:bjam stdlib=stlport --build-type=complete install,接下來是漫長的等待,大概兩個小時以上吧

posted @ 2008-12-09 13:22 許海斌 閱讀(1994) | 評論 (0)編輯 收藏
僅列出標題  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久av老司机精品网站导航| 欧美日韩一区二区在线观看视频| 欧美一区二区三区播放老司机| 在线观看视频一区二区| 欧美日韩精品是欧美日韩精品| 老司机aⅴ在线精品导航| 免费黄网站欧美| 久久五月天婷婷| 久久手机免费观看| 亚洲激情在线| 亚洲高清不卡| 亚洲激情女人| 国产精品亚洲综合一区在线观看| 欧美日韩高清在线观看| 欧美日韩激情小视频| 欧美久久成人| 欧美日韩国产一中文字不卡| 欧美日本一道本在线视频| 欧美成人精品影院| 欧美日韩的一区二区| 欧美系列亚洲系列| 国产欧美日韩三区| 黑丝一区二区三区| 亚洲欧洲精品成人久久奇米网| 亚洲精品美女在线观看播放| 国产日韩欧美综合| 精品av久久707| 999亚洲国产精| 亚洲欧美国产日韩天堂区| 久久精品视频在线看| 欧美国产一区在线| 久久久亚洲精品一区二区三区 | 在线看无码的免费网站| 狠狠88综合久久久久综合网| 亚洲国产精品一区二区尤物区| 亚洲精选久久| 欧美一区高清| 亚洲一区国产视频| 久久午夜电影网| 91久久午夜| 99精品欧美一区二区三区综合在线 | 狠狠色丁香久久婷婷综合丁香| 亚洲电影在线播放| 国产亚洲电影| 亚洲精品护士| 久久精品国产99国产精品| 欧美大成色www永久网站婷| 99热在线精品观看| 久久久精品动漫| 另类成人小视频在线| 欧美日韩亚洲免费| 国语自产精品视频在线看一大j8| 99riav久久精品riav| 久久久久久日产精品| 乱码第一页成人| 亚洲主播在线| 欧美日韩日本网| 在线观看亚洲视频| 久久久久久久精| 久久另类ts人妖一区二区 | 欧美黄色免费网站| 亚洲自拍偷拍麻豆| 欧美国产一区视频在线观看| 国产精品爱啪在线线免费观看| 国产精品免费区二区三区观看| 亚洲激情在线| 亚洲视频久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 每日更新成人在线视频| 国产欧美在线视频| 亚洲一区二区欧美日韩| 亚洲国产成人av在线| 亚洲无人区一区| 欧美日韩高清在线播放| 亚洲精品中文字幕有码专区| 欧美高清视频一二三区| 久久理论片午夜琪琪电影网| 国产欧美日韩91| 亚洲自拍偷拍福利| 一本色道久久综合亚洲精品婷婷| 欧美精品三级日韩久久| 亚洲精品久久久久中文字幕欢迎你 | 亚洲免费网站| 国产精品美女在线| 亚洲欧美制服中文字幕| 亚洲大胆av| 欧美精品1区| 中文在线一区| 一区二区三区欧美激情| 国产精品视频一区二区三区| 日韩视频―中文字幕| 日韩视频在线观看| 欧美视频精品一区| 午夜一区二区三区在线观看| 亚洲视频二区| 国产婷婷色一区二区三区四区| 亚洲国产成人tv| 久久国产欧美日韩精品| 久久av一区二区三区| 亚洲毛片视频| 欧美在线视频免费播放| 亚洲最新视频在线播放| 欧美一区影院| 一区二区三区|亚洲午夜| 欧美在线啊v| 一本一本久久| 久久久精品一区二区三区| 亚洲调教视频在线观看| 久久久久www| 午夜在线不卡| 欧美日韩高清在线一区| 欧美一级免费视频| 亚洲精品之草原avav久久| 香蕉久久夜色精品国产使用方法 | 亚洲精品1区| 欧美在线视频不卡| 亚洲欧美日韩中文在线制服| 欧美 日韩 国产一区二区在线视频| 欧美一区二区精品久久911| 欧美日韩国产999| 亚洲国产视频a| 亚洲国产精品久久久久婷婷884| 亚洲欧美一区二区三区久久| 一区二区三区日韩在线观看| 免播放器亚洲| 欧美激情一区在线| 亚洲国产精品999| 久久精品免费播放| 久久久人成影片一区二区三区观看 | 亚洲区中文字幕| 亚洲激情不卡| 男男成人高潮片免费网站| 美日韩精品视频| 在线观看日韩国产| 久久亚洲精选| 亚洲电影有码| 亚洲欧洲一区二区在线播放| 免费h精品视频在线播放| 欧美成人激情在线| 亚洲国产激情| 欧美激情网友自拍| 亚洲精品专区| 亚洲一区二区三区免费视频| 国产精品magnet| 亚洲免费婷婷| 久久久一二三| 亚洲国产第一页| 欧美精品久久久久久久| 一区二区日本视频| 欧美一区二区三区四区在线| 国产精品一区二区久久精品| 久久爱91午夜羞羞| 欧美成人黑人xx视频免费观看| 亚洲精品视频免费| 国产精品xxxxx| 欧美专区在线| 亚洲国产高清一区| 亚洲女优在线| 在线高清一区| 欧美日韩不卡在线| 欧美亚洲网站| 亚洲电影在线播放| 小嫩嫩精品导航| 伊人久久综合97精品| 欧美—级a级欧美特级ar全黄| 一本色道精品久久一区二区三区 | 久久精品国产成人| 91久久久久久| 久久精品av麻豆的观看方式| 亚洲高清视频在线| 欧美午夜宅男影院| 久久亚洲春色中文字幕| 亚洲欧洲偷拍精品| 久久精品最新地址| 亚洲高清一区二区三区| 亚洲尤物影院| 亚洲二区在线观看| 国产精品久久久久9999高清 | 久久精品视频网| 日韩一二三在线视频播| 免费观看久久久4p| 亚洲免费中文| 久久精品国产视频| 亚洲激情电影在线| 久久精品视频免费播放| 在线亚洲高清视频| 永久555www成人免费| 国产精品久久夜| 欧美va天堂va视频va在线| 午夜精品久久99蜜桃的功能介绍| 亚洲人成在线影院| 老鸭窝91久久精品色噜噜导演| 宅男精品视频| 亚洲第一色中文字幕| 国产精品免费福利| 欧美女主播在线| 久久嫩草精品久久久久| 性色av一区二区三区| 亚洲视频二区| 一区二区不卡在线视频 午夜欧美不卡在 |