【目前在Linux中进行线程编程的正确方法】教程文章相关的互联网学习教程文章

linux-GDB远程调试:无法停止线程【代码】

我在目标上有一个gdbserver,就像gdbserver:2345 / bin / ls一样启动.接下来,我要从主机连接gdb,并尝试发出下一个命令:(gdb) target remote 192.168.1.2:2345 Remote debugging using 192.168.1.2:2345 warning: Architecture rejected target-supplied description [New Thread 686] (gdb) Remote 'g' packet reply is too long: 00000000c10ed6be0000000000000000000000000000000000000000000000000000000000000000000000000000...

Java线程到Linux线程(LWP)的一对一映射

Java线程对象和OS线程(轻量级进程)之间是否存在一对一的映射.也就是说,如果我有一个Thread对象,是否可以始终精确地标识一个关联的OS线程,并且我将始终具有相同的关联OS线程吗?通常,这取决于OS和JVM,因此我将问题限于使用Oracle和Open JDK JVM的Linux. 休眠线程或等待线程的情况如何?还有尚未开始运行和已经结束运行的线程的极端情况?解决方法:Is there a one to one mapping between Java Thread objects and OS threads (是的,...

【Linux】第二章 Linux进程与线程(下)【代码】

4. Linux内核级线程与用户级线程 POSIX线程调度是一个混合模型,既支持用户级也支持内核级的线程。在创建线程时对contentionscope属性可设置为:PTHREAD_SCOPE_PROCESS。它表示新创建的线程与它所在的进程中的其他线程竞争处理器资源,等同用户级线程。 PTHREAD_SCOPE_SYSTEM。说明新创建的线程就像内核级线程一样在全系统的范围内竞争处理器资源。(1) 内核级线程线程的创建、撤销和切换等,都需要内核直接实现,即内核了解每一个作...

linux-“线程将所有bt全部应用满”在GDB中为空白

我正在尝试使用GDB 6.6在运行Slackware 12的Linux服务器上调试多线程进程. 一旦我附加并发出命令“ thread apply all bt full”,它什么也没有返回(回到gdb提示符). 知道为什么会这样吗?解决方法:尝试使用最新的GDB版本. 7.1或7.2.一切都应该工作.

c – 在linux上学习线程

Linux对我来说是一个新平台.我已经在Windows上用c编码了很多年,并且已经熟悉该平台上的多线程. 当我需要在linux平台上学习c时,C 11就出现了. Linux似乎在大多数情况下使用pthreads – 好吧还有boost :: threads和QT也有自己的线程.但是随着C 11出现了std :: thread,一种全新的(跨平台和C标准)做线程的方式. 所以我想我将不得不学习pthreads和std :: threads.最终,std :: thread似乎更重要,但那里有很多遗留代码,所以我必须知道两者...

linux – 在多个线程的同一个TCP套接字上发出阻塞的write()调用是否安全?

假设我有两个线程,T1和T2. 线程T1在TCP套接字S上进行阻塞write()调用,以发送大量字节B1的缓冲区.字节B1的缓冲区很大,以至于(a)写调用块和(b)TCP必须使用多个段来发送缓冲区. 线程T2还在同一个TCP套接字S上进行阻塞write()调用,以发送一些其他大的字节B2缓冲区. 我的问题是: 在UNIX上实现TCP是否保证B1的所有字节都将在B2的所有字节之前发送(反之亦然)? 或者TCP是否可以交错B1和B2的内容(例如,TCP发送带有B1数据的段,然后是带有B2...

在什么情况下内核线程在Linux中运行?

我是Linux Kernel的新手.我知道有两个背景1.进程上下文,在用户空间或内核空间中运行(例如:作为系统调用的一部分)2.中断语境 在什么情况下,内核线程(与任何用户线程无关,例如:flush任务)运行? 除了Linux内核中的进程和中断上下文之外还有其他任何上下文吗?解决方法:内核线程在内核空间的进程上下文中运行.虽然有一些内核线程也可以处理中断.它们被称为threaded interrupt handlers.但它们仍然在进程环境中运行! Here是对两种情...

linux – 用于多线程处理进程的Shell脚本【代码】

我是一名生物信息学家,最近陷入了一个问题,需要一些脚本来加速我的过程.我们有一个名为PHASE和Command的软件,我在我的命令行输入以解雇软件./PHASE test.inp test.out其中PHASE是程序的名称,test.ip是输入文件,test.out是输出文件.它需要一个核心来运行上述过程,大约需要3个小时才能完成. 现在我有1000个输入文件说test1.inp,test2.inp,test3.inp …..等等到test1000.inp并希望生成所有1000个输出文件..test1.out,test2.out .. … ...

在futex之前,线程/进程如何在Linux中停放和唤醒?

在Linux中存在futex系统调用之前,线程库(如pthreads)使用哪些底层系统调用来阻塞/休眠线程并随后从用户区唤醒这些线程? 例如,如果一个线程试图获取一个互斥锁,那么userland实现将阻塞该线程(可能是在一个短暂的旋转间隔之后),但我找不到用于此的系统调用(除了futex这是一个相对较新的创建).解决方法:在futex和当前实现的pthreads for Linux,NPTL(需要内核2.6和更新版本)之前,还有另外两个带有适用于Linux的POSIX Thread API的线程...

linux线程操作【代码】

初始化条件变量int pthread_cond_init(pthread_cond_t *cv,pthread_cond_attr *cattr); 函数返回值:返回0表示成功,返回其他表示失败。 参数: pthread_cond_attr是用来设置pthread_cond_t的属性,当传入的值是NULL的时候表示使用默认的属性。函数返回时,创建的条件变量保存在cv所指向的内存中,可以用宏PTHREAD_COND_INITIALIZER来初始化条件变量。值得注意的是不能使用多个线程初始化同一个条件变量,当一个线程要使用条...

Linux下多线程模拟停车场停车【代码】

#include<stdio.h> #include<string.h> #include<unistd.h> #include<stdlib.h> #include<pthread.h>#define ONE_SECOND 1000000 #define RANGE 10 #define PERIOD 2 #define NUM_THREADS 4typedef struct {int *carpark; //用一个数组来模拟停车场停车位int capacity; //停车场的车辆容量int occupied; //停车场现有的车辆数目int nextin; //下一个进来的车的位置(用carpark数组代表的下标表示)int nextout; ...

linux – IPC共享内存和线程内存之间的性能差异

我经常听到,与访问线程之间的进程内存相比,访问进程之间的共享内存段没有性能损失.换句话说,多线程应用程序不会比使用共享内存的一组进程更快(不包括锁定或其他同步问题). 但我怀疑: 1)shmat()将本地进程虚拟内存映射到共享段.必须为每个共享存储器地址执行此转换,并且可能代表显着的成本.在多线程应用程序中,不需要额外的转换:所有VM地址都转换为物理地址,就像在不访问共享内存的常规进程中一样. 2)内核必须以某种方式维护共享内...

linux – 分叉与线程

我之前在我的应用程序中使用过线程并且很好地了解它的概念,但是最近在我的操作系统讲座中我遇到了fork().这与线程类似. 我谷歌搜索他们之间的差异,我开始知道: > Fork只是一个看起来与旧进程或父进程完全相同的新进程,但它仍然是一个具有不同进程ID并拥有自己内存的不同进程.>螺纹是轻量级工艺,开销较小 但是,我脑子里还有一些问题. >什么时候你应该更喜欢fork()而不是线程和反之?>如果我想作为孩子调用外部应用程序,那么我应该使...

linux – Bash中的多线程【代码】

参见英文答案 > How do you run multiple programs in parallel from a bash script? 13个我想在我的shell脚本中介绍多线程功能. 我有一个脚本,它使用不同的参数调用函数read_cfg().每个函数调用都是独立的. 是否可以并行地实例化这些函数调用(而不是脚本).请让我怎样才能实现这一目标..?解决方法:当然,只需添加&命令后:read_cfg cfgA & read_cfg cfgB & read_cfg cfgC & wait然后,所有这些工...

linux多线程理解,附小例子【代码】【图】

今天写了4部分内容:在线程和进程的基础上,理解多线程是干什么的 相关函数 一个包含了2个线程的小例子 经常遇到的一个错误一、首先,先来说几点关于线程、进程、多线程的理解: 一个cpu有多个核,通常情况下一个核心对应一个线程,就可以提高程序运行效率。有篇文章是这么比喻的:没有线程的多核CPU 就像是 多个人在一个桌子上吃饭,有时候出现争抢的情况 会降低效率。有多线程的多核CPU 就像是多个人在多个桌子上吃饭,都吃自己桌...