相关疑难解决方法(0)

Linux中进程和线程之间的区别

在阅读了这篇回答和Robert Love的"Linux内核开发"之后,随后,在clone()系统调用中,我发现Linux中的进程和线程(几乎)与内核无法区分.他们之间有一些调整(在引用的SO问题中被讨论为"更多共享"或"更少共享"),但我仍然有一些问题尚未得到解答.

我最近参与了一个涉及几个POSIX线程的程序,并决定在这个前提下进行实验.在创建两个线程的进程中,所有线程当然都会获得一个返回的唯一值pthread_self(),不是getpid().

我创建的示例程序如下:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <pthread.h>

void* threadMethod(void* arg)
{
    int intArg = (int) *((int*) arg);

    int32_t pid = getpid();
    uint64_t pti = pthread_self();

    printf("[Thread %d] getpid() = %d\n", intArg, pid);
    printf("[Thread %d] pthread_self() = %lu\n", intArg, pti);
}

int main()
{
    pthread_t threads[2];

    int thread1 = 1;

    if ((pthread_create(&threads[0], NULL, threadMethod, (void*) &thread1))
         != 0)
    {
        fprintf(stderr, "pthread_create: error\n");
        exit(EXIT_FAILURE);
    } …
Run Code Online (Sandbox Code Playgroud)

c linux multithreading

19
推荐指数
1
解决办法
9219
查看次数

linux-在多个核心上运行进程

我对核心,进程和线程的工作方式有一个误解:

  • 进程具有线程数。
  • 所有这些线程共享相同的内存部分
  • Core具有自己的缓存和内存地址空间。

因此,当我在Linux OS上运行一个进程(包含多个线程)并检查“ top -H”命令时,我可以看到线程分布在多个内核上。

那么如何运作?(共享相同进程地址空间的同一进程的线程运行在不同的内核上吗?)?

我在这里想念什么?

谢谢

linux multithreading

5
推荐指数
1
解决办法
4615
查看次数

linux进程调度策略如何与线程调度策略相关?

我在线程与进程调度之间有点混淆.

我已经阅读了有关流程调度策略的内容

http://man7.org/linux/man-pages/man2/sched_getscheduler.2.html

我读过有关线程调度的内容

http://man7.org/linux/man-pages/man3/pthread_getschedparam.3.html

线程是否从其进程继承调度策略?是否可以将进程调度设置为SCHED_OTHER,然后将该进程的一个线程设置为SCHED_FIFO?我独立理解策略但不了解线程/进程关系.有没有洞察力?

c linux pthreads

4
推荐指数
1
解决办法
733
查看次数

标签 统计

linux ×3

c ×2

multithreading ×2

pthreads ×1