問題タブ [boost-context]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 共有スタックで使用される make_fcontext/jump_fcontext
共有スタックでブースト コンテキスト make_fcontext/jump_fcontext を使用して、スタックを保存/復元することでコルーチン メモリを共有する方法はありますか?
make_fcontextとjump_fcontextはスタック自体に書き込み、 yield /resume でスタックを保存/復元しようとするとクラッシュするようですが、make_fcontext/jump_fcontext は純粋なアセンブリ コードであるため、何が起こるかを理解するのは非常に困難です。
これは、セグメンテーション違反をトリガーするコルーチン メソッドです (コルーチンごとに異なるスタックを使用し、saveStack/restoreStack を使用しない場合、同じコードが非常にうまく機能します)。
何か案が ?どこか間違っていることがありますか?
c++ - ARM ベアメタルで Boost.coroutine2 を使用する
私はいくつかの組み込みプロジェクトに取り組んでおり、ARM cortex-M でコルーチンを使用したいと考えています。残念ながら、Boost.coroutine2 (内部で Boost.context を使用) は公式にはサポートしていません。Boost ライブラリを微調整して、Boost.context を使用して ARM cortex-M で動作できるようにする方法はありますか?
exception - ブースト コンテキスト: 例外の伝播に関する問題
(バージョン 2) を使用して C++ 11 ライブラリを記述しており、呼び出し元の実行にboost::context::execution_context
例外を伝達したいと考えています。execution_context
クライアントがライブラリ関数に与えるラムダ内で例外を処理したいと考えています。ただし、場合によっては、例外が boost::context によって正しく処理されないという奇妙な問題に遭遇しました。
これは期待どおりに機能し、ブーストのテストと例のいくつかと非常によく似ています:
出力:
ただし、次の変更は機能しません。
以下をラップするクラスを追加しますexecution_context
。
ここで、前と同じテストを行いますが、定義済みのクラスを使用します。
出力:
私が気付いた唯一の違いは、execution_context
がクラスに含まれているため、例外が不適切に処理されることです。それは意味がありません。
環境
私はGTestを使用しています。
コンパイラ
システム
ブースト
boost version 1.69.0 compiled for amd64