相关疑难解决方法(0)

如何在linux内核3.2中实现pthread?

所有,

下面的代码来自"Unix环境中的高级编程",它创建一个新线程,并打印主线程和新线程的进程ID和线程ID.

在本书中,它表示在linux中,此代码的输出将显示两个线程具有不同的进程ID,因为pthread使用轻量级进程来模拟线程.但是当我在Ubuntu 12.04中运行此代码时,它有内核3.2,打印相同的pid.

那么,新的linux内核是否会改变pthread的内部实现?

#include "apue.h"
#include <pthread.h>

pthread_t ntid;

void printids(const char *s) {
  pid_t     pid;
  pthread_t tid;
  pid = getpid();
  tid = pthread_self();
  printf("%s pid %u tid %u (0x%x)\n",
         s, (unsigned int)pid, (unsigned int)tid, (unsigned int)tid);
}

void *thread_fn(void* arg) {
  printids("new thread: ");
  return (void *)0;
}

int main(void) {
  int err;
  err = pthread_create(&ntid, NULL, thread_fn, NULL);
  if (err != 0)
    err_quit("can't create thread: %s\n", strerror(err));
  printids("main thread: ");
  sleep(1);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

linux pthreads

14
推荐指数
2
解决办法
1万
查看次数

linux 用户级(pthread)线程是否在多核上运行?

我知道有:

1) 用户级线程 - 在进程的相同地址空间内,但具有不同的堆栈。

2)内核级线程 - 在内核内存堆栈内部(我在这里猜测)。

所以当我创建用户级线程时,内核不知道它们[1]。那么内核如何知道,如何调度不同内核中的不同用户级线程。这个问题是关于 pthread 的。如果 pthread 是用户级线程,它如何在多核上运行?

未来答案寻求者阅读:( 感谢所有贡献者)

1)Ziffusion的回答(下)

2)大卫施瓦茨的回答

3)教程点链接

c linux multithreading pthreads

6
推荐指数
1
解决办法
4581
查看次数

为drupal并行化PHP脚本

我正在开发一个Drupal模块,在这些模块中我需要执行相同部分代码的5倍,所以,我认为我可以并行执行以提高执行速度,但我不想使用pcntl_fork,我想用pthread.现在的问题是:pthreadphp的库是否与中的相同c?我可以在php中实现内核级线程吗?因为我认为如果php pthread是用户级别我在我的情况下使用它没有任何优势感谢回复

php parallel-processing pthreads drupal-7

2
推荐指数
1
解决办法
276
查看次数