Boost.Context with Thread Migration in GCC

Boost.Context の jump_fcontext 前後でスレッドがすり替わっていたとしても安全に挙動するように GCC の最適化を制限したい話.
4
前へ 1 ・・ 5 6
Akso de la Malbono @Cryolite

どうせ1イベントに1スレッドのブロッキングモデルやっててリソースが足りなくなるとかイマドキめったにないだろうからわざわざ制御が逆転した複雑なプログラミングモデル使わなくていーんじゃね(ホジ

2013-02-08 23:46:34
若年寄(もう若くない) @kikairoya

ビルドするのめんどくさいから今度にしよう

2013-02-08 23:49:05
やまさ @yamasa

見てる: Boost.Context with Thread Migration in GCC - Togetter http://t.co/379lAEHv

2013-02-09 01:08:33
やまさ @yamasa

setcontext()でスレッドを跨ぐのはいろいろ危険なのでやっちゃダメよ、って話は昔聞いた気がする。

2013-02-09 01:10:12
やまさ @yamasa

まあ確かに、いきなり自身のスレッドがすげ変わってしまうような挙動はいろいろ問題起こすよねえ。

2013-02-09 01:14:22
やまさ @yamasa

一昨日の http://t.co/379lAEHv について考えてたんだけど、やっぱり異なるthread間でcontextを切り替えるのには本質的な問題点があるなあ。

2013-02-11 02:04:17
やまさ @yamasa

たとえば http://t.co/mpjb13xr のコードだと、関数fのcontextの中でいきなりthread IDとかthread_local変数の値が変わること自体がおかしいと思う。

2013-02-11 02:08:02
やまさ @yamasa

thread_local変数って、本来stack上に置きたいところだけどscopeの関係でそこには置けない、って感じのものに使われるから、stackが同じならthread_localも同じものを参照しなきゃならんでしょ。

2013-02-11 02:12:08
やまさ @yamasa

オイラの https://t.co/2cNvKbqW だって、thread localの値がいきなり変わったらぶっ壊れちゃうし。

2013-02-11 02:16:50
やまさ @yamasa

ちゃんとやるなら、makecontextではthread IDもthread local変数も新しいものを与え、swapcontextではそれらも一緒に切り替える、って感じになるだろうけど、これは結局user-space threadsの実装そのものだよね。

2013-02-11 02:22:05
前へ 1 ・・ 5 6