スレッド ライブラリを実装する必要があります。しかし、私は本当にこのyield()関数を実行することができません.yield()では、現在のスレッドを準備完了スレッドキューの最後にプッシュし、最初のスレッドをポップアウトして実行する必要があります.(FIFO) I swapcontext() を使用しています。だから私のコードはこのようなものです。
yield()
{
if(head!=NULL) // if FIFO is not empty, yield to a ready thread`
{
ready_queue_entry * old_thread= NULL;
old_thread = new_thread;
Push(old_thread);// push the current one to the FIFO
new_thread = Pop();// pop the first one from the FIFO
//save the current context and jump to the new thread context.
swapcontext(&(old_thread->context),&(new_thread->context));
}
}
ポップ機能とプッシュ機能がうまく機能すると確信しています。しかし、正しいスレッド コンテキストを取得できません。私は本当に混乱しています。誰かが私を助けてくれることを願っています。ありがとう。