問題タブ [ucontext]

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.

0 投票する
4 に答える
1598 参照

c - ユーザー レベルのスレッド ライブラリの実装 - makecontext からの戻り値

ユーザー スレッド ライブラリに関するいくつかの質問を見てきましたが、私の質問に答えるようなものはありませんでした。スレッドを作成し、実行し、キャンセルし、終了することができます。何らかの理由でできないのは、データを返すスレッドを取得することです。

スレッド ライブラリを初期化するときに、終了スレッド コンテキストを次のように設定します。

スレッドを作成し、次のように割り当てます。

関数が戻り、thread_exit()が呼び出されると:

出力は常に「戻り値: 0」です。

呼び出された関数は、整数へのポインタを返しています。

私は何を間違っていますか?

0 投票する
0 に答える
345 参照

c - Mac で ucontext を使用した pthread での clang バグ

と併用しucontextていpthreadます。以下のプログラムは Linux では正常に動作しますが、Mac ではアサーションに失敗しました。

問題は、別のスレッドからコンテキストを再開した後、スレッド ローカル変数が正しくアクセスされていないようです。

プログラムは 2 つのスレッド A と B を作成します。適切に同期されているため、A は、B がコンテキストを再開する前にコンテキストを準備完了に設定します。

誰かが Mac でのこの動作に光を当てることができれば、非常にありがたいです。

環境:

プログラム:

0 投票する
1 に答える
1399 参照

c++ - ucontext のオーバーヘッドがこれほど高いのはなぜですか?

Boost v1.59 の Boost.Context のドキュメントでは、次のパフォーマンス比較結果が報告されています。

[リンク]

これらの実験のソース コードは GitHub でホストされていると思います。

私の質問は、ucontextのオーバーヘッドが Boost ライブラリの実装よりも 20 倍高いのはなぜですか? このような大きな違いが生じる明確な理由はわかりません。Boost の実装は、ucontext の実装者が見逃した低レベルのトリックを使用しているのでしょうか、それとも何か他のことがここで起こっているのでしょうか?

0 投票する
0 に答える
91 参照

linux - 実行中のコンテキストが何であるかを知る方法

タイプ ucontext_t の 3 つの構造体の配列を作成する小さなプログラムを C で作成しています。プログラムは swapcontext コマンドを使用して、これら 3 つのコンテキストを切り替えます。

私の質問は、現在実行されているコンテキストのアイデンティティを知る能力はありますか? 現在実行中のコンテキストの識別子を提供する関数/コマンドを見つけることを期待しています。そのような機能/コマンドを知っていますか? デバッガを使用してそれを理解する方法はありますか?

どうもありがとう!

0 投票する
1 に答える
1375 参照

c - 2 つの関数コンテキストの実行の切り替え

2 つの関数を定義し、1 つが奇数を出力し、もう 1 つが偶数を出力するプログラムを作成しようとしています。プログラムは一定時間関数を実行し、アラーム信号を受信すると、現在の関数のコンテキストを保存した後、2 番目の関数の実行を開始します。次のアラーム信号を受信すると、最後に保存されたコンテキストから最初の関数の実行を再開します。

これには関数 getcontext と swapcontext を使用しました。

これが私のコードです:

私が受け取った出力は次のとおりです。

毎回コンテキストを復元しているのに、関数 nextEven() の値を出力しているのはなぜですか?