フォーク機能を実装しようとしています。この関数は、1 つのスレッドを 2 つに分割します。最初のものは実行を継続し、2番目のものは(引数で)実行f
(calle関数)を開始しv
ます。私のフォーク関数のコードは
void t_fork(ThreadFunc f, any_ptr v, char *name)
{
tcb *currentTcb = malloc(sizeof(tcb));
currentTcb->func= f;
currentTcb->arg= v;
currentTcb->sig=NULL;
strcpy(currentTcb->name,name);
setjmp(currentTcb->context);
q_insert(theadSystem.waitQ,currentTcb);
(*f)(v);
}
また、spawn ルーチンを使用して、新しいスレッドにスタック スペースを割り当てる必要があります。
ここで私のコードでsetjmp
エラーが発生し、スポナーを使用して新しいスレッドにスペースを割り当てる方法もわかりません。
それは例外を引き起こします:Unhandled exception at 0xcccccccc in Threads.exe: 0xC0000005: Access violation.
誰でもこれらの問題を修正するのを助けることができますか?