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

隨筆 - 7  文章 - 6  trackbacks - 0
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(1)

隨筆檔案

文章分類

搜索

  •  

積分與排名

  • 積分 - 33128
  • 排名 - 615

最新評論

閱讀排行榜

評論排行榜

To understand the backlog argument, we must realize that for a given listening socket, the kernel maintains two queues :
要明白backlog參數的含義,我們必須明白對于一個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分節信息,等待完成三路握手的連接,socket的狀態是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.一個已完成的連接的隊列,此隊列包含了那些已經完成三路握手的連接,socket的狀態是ESTABLISHED

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

Berkeley-derived implementations add a fudge factor to the backlog: It is multiplied by 1.5
Berkely實現中的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會在未完成隊列中增加一個新的記錄然后回復給客戶端三路握手中的第二個分節(服務端的SYN和針對客戶端的ACK),這條記錄會在未完成隊列中一直存在,直到三路握手中的最后一個分節到達,或者直到超時(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將會忽略后續到達的SYN,但是不會給客戶端發送RST信息,因為此時允許客戶端重傳SYN分節,如果返回錯誤信息,那么客戶端將無法分清到底是服務端對應端口上沒有相應應用程序還是服務端對應端口上隊列已滿這兩種情況

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

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

#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可以讓其自然的結束

 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就結束了
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 << "開始發送通知" << 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可以用類模板的偏特化實現。
posted @ 2009-02-09 17:59 許海斌 閱讀(1549) | 評論 (0)編輯 收藏

實現代碼:

    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_;
}
;



調用方式:

    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不會同時連續的出現,而且在begin of write_process和end of write_process之間肯定不會出現begin of read_process或者end of read_process。但是begin of read_process卻會在控制臺上連續出現,這說明在同一時刻只有一個write_prcess在運行,但是wrte_process沒有運行的時候,會有多個read_process并發運行。

 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>
            欧美日韩爆操| 欧美激情综合色综合啪啪| 欧美一级黄色网| 欧美精品三级| 久久久久久网| 麻豆国产精品777777在线| 亚洲激情成人在线| 亚洲一区三区视频在线观看| 麻豆成人在线观看| 在线日韩av片| 久久久久九九视频| 午夜天堂精品久久久久| 国产精品久久久久久久久久尿| 亚洲精品韩国| 欧美高清在线观看| 久久精品国产在热久久| 国产伦精品一区二区三区免费 | 亚洲国内欧美| 久热精品在线| 久久精品国产久精国产思思| 国产日产精品一区二区三区四区的观看方式 | 亚洲国产精品成人一区二区 | 亚洲激情校园春色| 蜜臀va亚洲va欧美va天堂| 久久av一区二区三区| 国产亚洲午夜高清国产拍精品| 欧美亚洲系列| 校园春色综合网| 国产精品稀缺呦系列在线| 香港久久久电影| 亚洲自拍啪啪| 国产视频在线观看一区二区三区| 欧美一区高清| 久久gogo国模啪啪人体图| 精品91在线| 亚洲电影观看| 欧美视频一区二区| 亚洲欧美日韩在线不卡| 夜夜嗨网站十八久久| 国产精品久久一区二区三区| 午夜性色一区二区三区免费视频| 中国女人久久久| 国产日本欧美一区二区| 男同欧美伦乱| 欧美日韩国产91| 欧美一区91| 久久午夜av| 洋洋av久久久久久久一区| 亚洲永久在线观看| 在线观看日韩欧美| 亚洲人成在线播放| 国产精品每日更新| 麻豆freexxxx性91精品| 欧美风情在线| 性欧美超级视频| 美日韩精品视频免费看| 午夜精品国产| 亚洲美女毛片| 亚洲欧美乱综合| 亚洲国产婷婷| 亚洲韩国日本中文字幕| 亚洲精品一区二区三区福利| 国一区二区在线观看| 一区二区三区导航| 在线电影一区| 亚洲欧美日韩精品在线| 日韩一区二区免费看| 久久精品国产欧美亚洲人人爽| 99国产精品自拍| 久久久久久久精| 欧美伊久线香蕉线新在线| 欧美老女人xx| 欧美大片91| 国产字幕视频一区二区| 亚洲午夜激情网站| 99国产精品久久久久老师| 久久九九免费| 午夜精品视频在线| 欧美日韩在线播放三区四区| 欧美韩国日本综合| 国内视频一区| 亚欧成人精品| 欧美一区二区三区在线免费观看| 欧美国产日韩亚洲一区| 欧美诱惑福利视频| 欧美精品在线一区二区| 1024精品一区二区三区| 亚洲专区国产精品| 日韩一级大片| 欧美影院在线| 在线观看国产日韩| 久久福利毛片| 午夜精品久久久久久久99水蜜桃| 免费视频亚洲| 久久久一本精品99久久精品66| 欧美日韩亚洲一区二区三区在线 | 欧美福利视频网站| 国产精品亚洲欧美| 91久久久亚洲精品| 在线成人av网站| 久久免费99精品久久久久久| 欧美一区二区福利在线| 欧美金8天国| 欧美福利一区二区三区| 国产视频亚洲精品| 亚洲永久精品国产| 亚洲色图综合久久| 欧美精品一区二区三| 蜜桃精品一区二区三区 | 欧美一级久久久久久久大片| 一区二区久久| 亚洲欧美日韩在线| 欧美日精品一区视频| 91久久精品国产91久久性色| 亚洲激情婷婷| 欧美国产视频一区二区| 亚洲福利视频在线| 最新高清无码专区| 欧美电影免费观看高清| 欧美日韩国产999| 亚洲黄一区二区| 日韩一级大片| 欧美视频一区在线| 亚洲美女在线国产| 中文网丁香综合网| 国产曰批免费观看久久久| 欧美一区二区成人6969| 欧美激情小视频| 日韩视频在线观看国产| 国产精品一区二区三区乱码| 国产亚洲成人一区| 欧美成人一品| 亚洲日本视频| 久久av一区二区三区漫画| 国产伦精品一区二区三区照片91| 久久久久久亚洲精品杨幂换脸| 欧美成人免费全部| 宅男噜噜噜66国产日韩在线观看| 欧美区日韩区| 久久精品99国产精品| 欧美激情视频一区二区三区不卡| 香蕉久久国产| 精品动漫3d一区二区三区免费版| 欧美精品一区二区三区高清aⅴ| 亚洲精品午夜精品| 久久这里只有精品视频首页| 亚洲美女啪啪| 国产一区二区久久久| 欧美aaa级| 亚洲视频1区| 欧美ed2k| 亚洲特色特黄| 亚洲国产精品国自产拍av秋霞| 国产精品香蕉在线观看| 久久这里只有| 欧美一区二区成人| 亚洲人成在线观看一区二区| 久久在线91| 夜夜精品视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美一区2区三区4区公司二百| 免费看的黄色欧美网站| 欧美在线观看一区二区| 在线看不卡av| 好吊日精品视频| 午夜精品免费| 一本色道久久综合亚洲精品小说| 欧美18av| 欧美专区在线观看一区| 午夜精品久久久久久久| 亚洲欧洲在线观看| 在线观看一区二区视频| 老司机精品久久| 久久人人爽人人爽| 久久午夜精品一区二区| 亚洲欧美日韩国产精品| 亚洲视频大全| 亚洲精品一区二区三区蜜桃久| 亚洲人在线视频| 狂野欧美激情性xxxx| 亚洲国产精品一区二区尤物区| 亚洲欧美日韩区| 亚洲午夜91| 老司机久久99久久精品播放免费| 久久精品一本久久99精品| 久久激情视频久久| 亚洲一区二区精品视频| 亚洲综合国产| 亚洲视频一二三| 午夜精品久久久久99热蜜桃导演| 99国产欧美久久久精品| 亚洲小视频在线观看| 亚洲免费在线视频一区 二区| 亚洲免费观看在线视频| 一区二区三区 在线观看视频| 亚洲精品无人区| 亚洲无亚洲人成网站77777 | 亚洲人成网站在线观看播放| 欧美高清视频在线| 91久久国产精品91久久性色|