相关疑难解决方法(0)

如果线程共享相同的PID,它们如何识别?

我有一个与Linux中的线程实现相关的查询.

Linux没有明确的线程支持.在用户空间中,我们可能使用线程库(如NPTL)来创建线程.现在,如果我们使用NPTL,它支持1:1映射.

内核将使用该clone()函数来实现线程.

假设我创建了4个线程.那意味着:

  • 将会有4个task_struct.
  • 在内部task_struct,将根据克隆的参数提供共享资源(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND).

现在我有以下查询:

  1. 4个线程是否具有相同的PID?如果有人可以详细说明,如何共享PID.
  2. 如何识别不同的线程; 是否有一些TID(线程ID)概念?

multithreading pid linux-kernel

91
推荐指数
2
解决办法
5万
查看次数

为什么这个演员的结果不是左值?

我需要一些关于这种奇怪行为的建议 - 让我们有这个代码:

int ** p;
Run Code Online (Sandbox Code Playgroud)

编译没有任何麻烦:

p++;
Run Code Online (Sandbox Code Playgroud)

但是这个:

((int**)p)++;
Run Code Online (Sandbox Code Playgroud)

给我这个错误信息:“error: lvalue required as increment operand”.

我正在转向p它已经存在的类型,没有任何改变,那么问题是什么?这是我遇到的问题的简化版本,当我试图编译一个旧版本的时候gdb.所以我想,这样做有所改变.知道第二个例子有什么问题吗?

c casting rvalue lvalue

5
推荐指数
4
解决办法
1075
查看次数

标签 统计

c ×1

casting ×1

linux-kernel ×1

lvalue ×1

multithreading ×1

pid ×1

rvalue ×1