日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

boost signals2 coroutine

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 boost signals2 coroutine 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

signals2 觀察者模式, 解耦模塊


class Button {typedef boost::signals2::signal<void (int x, int y)> OnClick; public:typedef OnClick::slot_type OnClickSlotType;// forward slots through Button interface to its private signalboost::signals2::connection doOnClick(const OnClickSlotType & slot);// simulate user clicking on GUI button at coordinates 52, 38void simulateClick(); private:OnClick onClick; };boost::signals2::connection Button::doOnClick(const OnClickSlotType & slot) {return onClick.connect(slot); }void Button::simulateClick() {onClick(52, 38); }void printCoordinates(long x, long y) {std::cout << "(" << x << ", " << y << ")n"; } //]int main() {Button button;button.doOnClick(&printCoordinates);//<span style="color:#FF0000;">這句。 否則就要將printCoordinates函數設置為Butoon類的成員、或者賦值給Button類的成員。</span>button.simulateClick();return 0; }

from: http://blog.csdn.net/vagrxie/article/details/5518130


后面工作中可以嘗試使用signals2.



關于coroutine,看了幾篇帖子

1) coroutine是用戶態的切換, 比線程切換輕量

2) 同步效率低; 異步需要N多回調,代碼邏輯切成碎片;coroutine讓邏輯集中、順暢。? 簡單類比jmp跳轉

3)stackless 與 stackful。? stackless的coroutine不能有棧變量(否則jmp回來的時候棧頂、寄存器等肯定已變了)。 stackful支持有棧變量(jmp回來會恢復現場?)

4)與異步比, 性能上有提升么?c++/boost::asio沒看到有用的。 (go、lua除外)




總結

以上是生活随笔為你收集整理的boost signals2 coroutine的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。