我想將一個使用ucontext的庫移植到支持pthreads但不支持ucontext的平臺上。代碼編寫得很好,所以通過調用pthread例程來替換對ucontext API的所有調用應該相對容易。但是,這是否會引入大量的額外開銷?或者這是一個令人滿意的替代品我不確定ucontext如何映射到操作系統線程,並且此工具的目的是使協程式產卵相當便宜和容易。pthreads vs ucontext的性能特徵
所以,問題是:用pthread調用替換ucontext調用是否會顯着改變庫的性能特徵?
我想將一個使用ucontext的庫移植到支持pthreads但不支持ucontext的平臺上。代碼編寫得很好,所以通過調用pthread例程來替換對ucontext API的所有調用應該相對容易。但是,這是否會引入大量的額外開銷?或者這是一個令人滿意的替代品我不確定ucontext如何映射到操作系統線程,並且此工具的目的是使協程式產卵相當便宜和容易。pthreads vs ucontext的性能特徵
所以,問題是:用pthread調用替換ucontext調用是否會顯着改變庫的性能特徵?
pthread將使用系統調用,並略微管理一些內存。它應該可以與ucontext相媲美,假設需要相同數量的系統調用(我會天真地用strace檢查)。
出於同樣的原因,swapcontext()比使用一些longjmp技巧要慢(請參閱this page討論,其中作者聲稱其應用程序的性能影響7倍)。
我不是這方面的專家,但我開發了一個使用coroutines spice-gtk的庫,並且我們有使用ucontext/jmp,gthread或winfibers的後端。我沒有注意到任何性能改變,但這可能是因爲lib通常是IO綁定的。
[Co-Operative線程問題](http://stackoverflow.com/questions/4298986/is-there-something-to-replace-the-ucontext-h-functions)討論。開銷,我不知道。 – SparKot