如何从另一个线程继续线程的工作?

时间:2017-04-03 20:01:55

标签: c multithreading scheduler lock-free program-counter

我有两个线程(在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 方法的第3条指令)

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

0 个答案:

没有答案