使用場景
本文主要介紹了怎麼通過 boost::coroutine2 來在 c++ **中使用協程,詳細的介紹請移步 boost::coroutine2 文件。
乙個協程可以認為是把**分成了兩個部分,而我們可以控制執行權在這兩部分跳轉,每次跳轉同時也可以傳遞資料。boost::coroutine2 提供的是非對稱協程(asymmetric coroutines),將**分成的兩個部分有呼叫和被呼叫者關係。
boost::coroutine2 提供的協程只能單向傳遞資料,資料只能單向的從乙個**塊流向另乙個**塊。流入流出分別對應著 push_type 和 pull_type 型別,由這兩個型別組成協程間跳轉的通道,同時也是資料傳遞的通道。
#include從協程中獲取資料
using coro_t = boost::coroutines2::coroutine<
int>
;auto source = coro_t::
pull_type([
](coro_t::push_type & yield)})
;for
(auto value : source)
輸出:01向協程中放置資料2
using coro_t = boost::coroutines2::coroutine<
int>
;auto sink = coro_t::
push_type([
](coro_t::pull_type & acquire)})
;for
(auto i =
0; i !=3;
++i)
輸出:01push_type 和 pull_type 都有 operator bool,在返回 false(協程結束了) 時,不能在放入資料或者獲取資料。2
pull_type 可以通過 begin() 獲得迭代器,也可以通過呼叫 get 獲取值,通過 operator() 來轉換控制權。
pull_type 應該先呼叫 get 在呼叫 operator()。
using coro_t = boost::coroutines2::coroutine<
int>
;auto source = coro_t::
pull_type([
](coro_t::push_type & yield)})
;while
(true
)source()
;}
輸出:1 2 3 4 5 6 7 8 9 10
轉 A2W W2A T2A T2W 等巨集
如果你覺得使用 widechartomultibyte,multibytetowidechar 等函式比較麻煩 眾多的引數,緩衝區的分配與銷毀等。那麼可以使用 a2w w2a t2a t2w 等巨集來代替,它們對上面兩個函式進行了封裝。在使用這些巨集之前,應該包含標頭檔案 atlconv.h 並在呼...
2 基礎控制項2
transform 的預設值為 1,0,0,1,0,0 nslog nsstringfrom 可以列印其他型別的 比如類 affine transform a ffine transform 的初始化為 make make 只能改變一次 不可重複改變 如果想要重複改變 則使用去掉 make 的方法t...
什麼是P2P,O2O,B2B,B2C,C2C模式
最近網際網路行業各種to的模式搞得人暈頭轉向,我也是在這整理一下,防止在聽別人裝b的時候對答不流 p2p peer to peer 對等網路 可以簡單的定義成通過直接交換來共享計算機資源和服務,而對等計算模型應用層形成的網路通常稱為對等網路。在p2p網路環境中,成千上萬臺彼此連線的計算機都處於對等的...