0

我有两个线程(在 C 中)执行以下指令:

void Foo() {
   // function running in thread 1
   1| head = NULL;
   2| tail = NULL;
}

void Bar() {
  // function running in thread 2
  1| mid = mid-next;
  2| tail = tail->next;
  3| head = head->next;
}

现在,我的问题与无锁编程领域有关,它是这样的:

  • 线程 1 执行 (1) 并进入睡眠状态
  • 线程 2 执行 (1) 和 (2) 并进入睡眠状态
  • 线程 1 醒来并注意到(通过 CAS 指令)tail变量已更改并回滚其更改((1)指令)并希望通过继续线程 2 工作(来自Bar方法的第三条指令)来提供帮助

我的问题是:我们能否以某种方式从线程 1 继续线程 2 的工作?[例如通过以某种方式改变指令指针或通过任何其他方式] 我们可以修改或保留所有类型的线程状态信息。

4

0 回答 0