1

我正在阅读 linux 内核中的 attach_pid 函数。它的代码如下:

{
    struct pid_link *link;

    link = &task->pids[type];
    link->pid = pid;
    hlist_add_head_rcu(&link->node, &pid->tasks[type]);
}

我不明白为什么它不直接像这样设置指针:task->pids[type]->pid = pid. 为什么将 task->pids 复制到链接变量中并再次读取链接变量?我发现许多代码将指针复制到变量中并间接读取。

它有同步问题还是对代码阅读有好处?

4

1 回答 1

1

可能只是&task->pids[type]在调用 hlist_add_head_rcu() 时让我们免于再次取消引用。但是聪明的编译器应该能够自己做到这一点。

于 2013-01-15T05:11:24.970 回答