set=*(group->list[i]->pid0Set);
时间: 2023-06-15 10:07:03 浏览: 90
这段代码中,`group` 是一个指向结构体的指针,`list` 是结构体中的一个数组,`i` 是数组下标。假设结构体中的每个元素都有一个名为 `pid0Set` 的指针成员,指向某个数据类型为 `Set` 的变量。
这段代码的作用是将 `pid0Set` 指向的 `Set` 变量的值复制到一个名为 `set` 的 `Set` 变量中。具体来说,`group->list[i]->pid0Set` 先访问了 `group` 指向的结构体中的 `list` 数组的第 `i` 个元素,再访问该元素中的 `pid0Set` 指针成员。`*(group->list[i]->pid0Set)` 则是将指针解引用,得到指针所指向的 `Set` 变量。最后,将该 `Set` 变量的值复制到一个名为 `set` 的 `Set` 变量中。
相关问题
p->counter = (current->counter + 1) >> 1; current->counter >>= 1; if (!current->counter) current->need_resched = 1; retval = p->pid; p->tgid = retval; INIT_LIST_HEAD(&p->thread_group); write_lock_irq(&tasklist_lock); if (clone_flags & CLONE_THREAD) { p->tgid = current->tgid; list_add(&p->thread_group, ¤t->thread_group); } SET_LINKS(p); hash_pid(p); nr_threads++; write_unlock_irq(&tasklist_lock);
这段代码看起来是关于进程调度方面的。它将当前进程的计数器值除以2并赋值新的进程,然后将当前进程的计数器值也除以2。当前进程的计数器值变为0,则设置标志以表明需要重新调度。接下来,将新进程添加到进程链表中并设置其进程 ID。如果使用了 CLONE_THREAD 标志,则将新线程添加到当前进程的线程组中。最后,更新进程哈希表并增加线程计数器。
public function lists() { $user = User::auth(); // $data = Request::all(); $pid = intval($data['pid']); // $permission = 1000; if ($pid > 0) { File::permissionFind($pid, 0, $permission); $builder = File::wherePid($pid); } else { $builder = File::whereUserid($user->userid); } // $array = $builder->take(500)->get()->toArray(); foreach ($array as &$item) { $item['permission'] = $permission; } // if ($pid > 0) { // 遍历获取父级 while ($pid > 0) { $file = File::whereId($pid)->first(); if (empty($file)) { break; } $pid = $file->pid; $temp = $file->toArray(); $temp['permission'] = $file->getPermission($user->userid); $array[] = $temp; } } else { // 获取共享相关 DB::statement("SET SQL_MODE=''"); $pre = DB::connection()->getTablePrefix(); $list = File::select(["files.*", DB::raw("MAX({$pre}file_users.permission) as permission")]) ->join('file_users', 'files.id', '=', 'file_users.file_id') ->where('files.userid', '!=', $user->userid) ->where(function ($query) use ($user) { $query->where('file_users.userid', 0); $query->orWhere('file_users.userid', $user->userid); }) ->groupBy('files.id') ->take(100) ->get(); if ($list->isNotEmpty()) { foreach ($list as $file) { $temp = $file->toArray(); $temp['pid'] = 0; $array[] = $temp; } } } // 图片直接返回预览地址 foreach ($array as &$item) { File::handleImageUrl($item)
这段代码是一个PHP函数,名为"lists"。它首先通过调用"User::auth()"方法获取用户认证信息。然后,它从请求中获取数据,并将"pid"转换为整数类型。
接下来,它设置了一个名为"permission"的变量并赋值为1000。如果"pid"大于0,它会调用"File::permissionFind()"方法并传递"pid"、0和"permission"作为参数,并将返回的结果赋给"builder"变量。否则,它将根据用户的"userid"来设置"builder"变量。
然后,它使用"builder"变量查询数据库,并取出最多500条数据,将结果转换为数组。接着,它遍历数组中的每一项,并为每个项添加一个名为"permission"的字段,值为之前设置的"permission"。
如果"pid"大于0,它将通过循环获取父级文件。在循环中,它根据"pid"查询数据库,并将结果赋给"file"变量。如果查询结果为空,则跳出循环;否则,将"pid"更新为父级文件的"pid",将查询到的文件转换为数组,并为数组添加一个名为"permission"的字段,值为根据用户的"userid"获取的权限值。最后,将该数组添加到之前的数组中。
如果"pid"小于等于0,它将查询共享相关的文件。首先,它执行了一条SQL语句,将SQL_MODE设置为空字符串。然后,它使用数据库连接的前缀和"files"表和"file_users"表进行关联查询,选取了一些字段,并按照"files.id"进行分组。接着,它使用了一些条件限制,并取出最多100条结果。如果查询结果不为空,它将遍历查询结果,并将每个结果转换为数组,并将"pid"字段设为0。最后,将该数组添加到之前的数组中。
最后,它再次遍历数组中的每一项,并调用"File::handleImageUrl()"方法来处理图片的预览地址。
这个函数的作用是根据一些条件查询数据库,并返回相应的结果数组。