我有两个线程(在 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 的工作?[例如通过以某种方式改变指令指针或通过任何其他方式] 我们可以修改或保留所有类型的线程状态信息。