Articles of multithreading

孩子过程怎么样?

父进程突然终止而不等待的subprocess会发生什么? 孩子的过程是否也死了?

限制JVM使用的线程数

如何设置限制某人可以创build的线程数量? 我所做的就是运行某人的代码(类似于ideone),并且想要限制他可以产生的线程数量。 怎么做? 一些jvm设置或别的东西? 编辑我添加更多的指定信息,因为有些人没有得到我的观点。 一些随机的人给我一个我的电脑将要执行的代码 代码必须在最多k个线程内执行 所有的都必须是自动化的 – 像SPOJ,ideone等一样工作

sprintf线程安全吗?

sprintf线程安全吗? //Global log buffer char logBuffer[20]; logStatus (char * status, int length) { snprintf(logBuffer, 19, status); printf ("%s\n", logBuffer); } 这个函数的线程安全性完全取决于snprintf / sprintf的线程安全性。 更新:谢谢你的答案。 我不介意,如果实际内容gts搞砸了。 但是想确认在这种情况下,当多个线程试图写入logBuffer时,sprintf不会导致内存损坏/缓冲区溢出超过20字节?

检查当前线程是否是主线程

我如何检查当前线程是否是Linux上的主线程? 它看起来像gettid()只返回一个PID,但似乎Linux不保证与main()的线程总是有一个常量和统一的PID。 原因是我有一个自动并行化进行,我想确保pthread_create()不在一个已经在pthread_create()创build的线程上运行的函数中调用。

Matlab 2011a使用64位Linux上的所有内核?

嗨,我在网上看了,但我似乎无法find答案是否需要做任何事情,使matlab使用所有内核? 据我所知,自2007年以来,multithreading已得到支持。在我的机器上,matlab仅使用一个@ 100%的内核,其余的占用2%。 我正在使用64位Linux(Mint 12)。 在我的另一台只有2个核心,32位的计算机似乎正在利用两个核@ 100%。 不是所有的时间,但在足够的情况下。 在64位,4核心电脑这从来没有发生。 我必须在64位做任何事情,让Matlab尽可能使用所有的核心? 在安装之后,我不得不做一些自定义链接,因为Matlab没有find库(例如libc.so.6),因为它没有在正确的位置查找。

如何在Linux中为用户级线程实施抢先式调度?

在用户级线程中,有N个用户级线程在单个内核线程之上运行。 这与只有一个用户线程在内核线程上运行的pthread相反。 在单个内核线程上抢先调度N个用户级线程。 但是,这是怎么做的细节。 我听到一些build议线程库设置的东西,以便内核发送一个信号,这是一个机制,将执行从一个单独的用户级线程放到一个信号处理程序,然后可以执行抢先调度。 但是,如何保存和/或变异这些状态(如寄存器和线程结构)以使这一切工作的详细信息是什么? 有没有可能是一个非常简单的用户级线程,有助于了解细节?

Linux调度程序如何在多核处理器上调度进程?

多核处理器利用线程级并行性,这意味着多个线程并行运行。 假设一个进程只有一个线程,那么在执行这个进程的时候,其他内核是否保持空闲? 在linux系统中,调度程序把进程和线程都视为一个任务。 它在调度过程中并不区分进程和线程。 那么,这是否意味着不同的内核并行执行不同进程的不同线程? 当上下文切换发生时,这是否只发生在一个核心或cpu的所有核心?

在多个线程/进程之间共享stdout

我有一个Linux程序(语言无关紧要),它打印它login到标准输出。 日志IS需要监视进程。 现在我将通过fork或使用线程来并行化它。 问题:由此产生的标准输出将包含不可读的组合不相关的行… 最后问题:你将如何重构并行进程的输出逻辑?

是否有可能在OS X中设置pthread CPU亲和力?

在Linux中有一个在sched.h中定义的sched_setaffinity()函数,但是我似乎无法在Mac OS X 10.6 pthreads实现中find类似的东西…如果无法设置关联,那么默认策略是什么在OS X中 ?

multithreading服务器问题

我正在写一个服务器在Linux应该服务的API。 最初,我想在单个端口上进行multithreading,这意味着我将有多个线程处理单个端口上接收到的各种请求。 我的一个朋友告诉我,这不是它应该工作的方式。 他告诉我,当收到请求时,首先必须遵循一个Handshake过程,创build一个线程,监听其他某个专用于该请求的端口,然后将请求的客户端redirect到新的端口。 理论上,这很有趣,但我找不到任何有关如何实现握手和redirect的信息。 有人可以帮忙吗? 如果我在解释你的响应时没有错,一旦我创build了一个主线程侦听端口的multithreading服务器,并创build一个新的线程来处理请求,我基本上使它在单个端口上multithreading? 考虑一下我每秒都会收到大量请求的场景。 港口上的每一个请求现在都应该等待“当前”请求完成吗? 如果不是,那么通信如何完成:假设一个浏览器发送一个请求,所以处理这个请求的线程必须先监听端口,阻塞,处理,响应,然后解除阻塞。 通过这个,虽然我有“multithreading”,但我使用的是除主线程以外的一个线程,因为端口被阻塞。