cout << “meetup” << 0;

7 月 11 號 (下週五) 晚上將在台北舉行第 0 次 C++ Otakus and Users in Taipei (簡稱 COUT) 聚會.

COUT 是:

  • A face-to-face community for C++ programmers in northern Taiwan
  • Not aimed at n00bs
    • 畢竟初衷是幾個老屁股想發洩拉賽聚聚
    • 歡迎初心者, 這裡有人可以讓你請教, 可以點你. 但你需要做該做的功課
    • 預計分享的內容大多會是微硬到很硬
  • Monthly meetup
    • 計劃每個月聚會一次
    • 每月的第二個週五 (TBD?)
    • Social + 拉低賽 + 1~2 個主題分享
  • Google+ community

Join us if you are interested.

Boost.Asio – Strand

相較於 libevent, libev, libuv 這三套知名的 asynchronous I/O framework, Boost.Asio 最大的兩個優點是:

  1. Modern C++ support. 其好處之一是 no cast required, 不用犧牲 callback/handler 等的 type safety
  2. Multi-threading support. AFAIK, 前面提到的三個 async framework 都不能以超過一個 worker thread 去 drive 同一個 event loop. 使用這三個 framework 的時候, 一般的建議是以一個 worker thread 對應 一個 event loop. 這當然可以 workaround, 但需要自幹一些東西. 非官方 support 機制的正確性, 效能, scalability 多少會讓使用者有疑慮

不付責任猜測. 或許因為 libevent 與 libev 誕生的年代比較久遠, 而 libuv 的最主要 target user 是 node.js, 所以三者都選擇無視 multi-core/cpu scale-out 的問題.
Continue reading

Concurrent Connection 承載的上限

上個週末在噗浪上參與了關於一台 server 一個 IP 能夠承載多少 inbound connection 的討論. 才發現原來有不少朋友誤以為上限值是 65536 (2^16) 個, 或是雖然覺得這個說法哪裡怪怪的卻又說不出個道理來.

這篇文字的目的是希望可以在網路上留下中文的腳印, 幫助減少這樣的誤解.
Continue reading

On C-Style Cast in C++

Casts in C++

與 C 不同, C++ 提供了五種轉型的方式:

  1. dynamic_cast
  2. static_cast
  3. reinterpret_cast
  4. const_cast
  5. C-style (in syntax) cast

即便這是個每本 C++ 聖經都會說明的題材, 也一定會提醒避免 C-style (in syntax) cast. 實務上, 依然時常看到已有多年經驗的 programmer 會選擇使用 C-style (in syntax) cast. 先破梗一下, 前面一直強調 in syntax 的原因是, 雖然語法相同, C-style cast 在 C++ 中的語意不完全與 C 相同, 前者是後者的 super set. 這篇文字主要試圖說明 C-style (in syntax) cast 在 C++ 中到底是什麼, 以及為什麼避免.
Continue reading