对于使用过程中并发。通过实现更轻量级线程。每个线程都是一个独立的逻辑流。主题是CPU在执行调度的最小独立单位,这个过程是资源分配单元。当然,这是在微内核操作系统说。总之,这是唯一的一个操作系统内核提供了最重要的OS服务,许多人看点击打开链接每一个线程有它自己的线程上下文。包含一个唯一的线程ID(li...
分类:
系统相关 时间:
2015-08-21 20:52:08
阅读次数:
181
1.CreateThread与_beginthreadex#pragma once#include#include#include#include//子线程函数DWORD WINAPI ThreadFun1(LPVOID pM){ printf("子线程的线程ID号为:%d\nHello wo...
分类:
编程语言 时间:
2015-08-09 22:25:56
阅读次数:
223
上面的代码启动两个线程,线程T1会占用少量CPU,线程T2会占满一个CPU。
那么如果找出代码中占用CPU较多的问题呢?
首先我们通过top列出进程,按照cpu使用率排序(shift + p)
可以看出出问题的进程号是30358
然后使用 top -H -p 30358 得到如下结果
这里可以看到线程为30371占用太多CPU,此线程有问题
接下来使用jstack ...
分类:
编程语言 时间:
2015-07-26 20:58:11
阅读次数:
212
消息队列是属于线程的,Post消息就是把消息放到目标线程的消息队列中。
这两者的区别在于:
PostMessage 通过指定目标窗口句柄来确定目标线程,通常情况下由窗口过程来处理消息;
PostThreadMessage 直接指定目标线程ID来确定目标线程,没有目标窗口,只能在消息循环中直接根据消息类型做相应的处理。
在程序设计的选择方面,如果是UI线程,则应使用PostMessage;如...
分类:
其他好文 时间:
2015-07-21 17:10:20
阅读次数:
112
线程原语
线程概念
线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。更多详细解释看百度百科:线程。
在Linux shell下通过命令 $ ps -Lf pid 查看指定pid号下的所有线程。
线程之间的共享与非共享
这里的线程是指同一进程下的线程。
共享:
1.文件描述符表
2.每种信号的处理方式
3.当前工作目录
4.用户ID和组ID...
分类:
编程语言 时间:
2015-07-17 21:08:58
阅读次数:
165
本文摘自《深入理解计算机系统》 并发编程章节。
对于多线程编程最棘手的部分为共享变量的并发访问,那么就需要了解在编程中那些为共享变量。这就涉及到线程存储模型。
每个线程都有它自己的线程上下文.线程上下文包括:
线程ID,栈,栈指针,程序计数器,条件码和通用寄存器的值。
多个线程在进程中共享如下部分:
虚拟地址空间,只读代码块,读、写数据,堆,打开的文件集合。
寄...
分类:
编程语言 时间:
2015-07-12 19:00:24
阅读次数:
208
一个程序至少有一个进程,一个进程至少有一个线程,进程拥有自己独立的存储空间,而线程可以看作是轻量级的进程,共享进程内的所有资源。可以把进程看作一个工厂,线程看作工厂内的各个车间,每个车间共享整个工厂内的所有资源。就像每个进程有一个进程ID一样,每个线程也有一个线程ID,进程ID在整个系统中是唯一的,但线程ID不同,线程ID只在它所属的进程环境中有效。线程ID的数据类型为pthread_t,通常是无符...
分类:
编程语言 时间:
2015-07-02 14:05:52
阅读次数:
142
1.线程标识就像每个进程都有一个进程ID一样,每个线程都有一个线程ID。进程ID在整个系统中是唯一的,但线程ID只在它所属的进程环境中有效。线程ID使用pthread_t数据类型来表示,实现的时候可以使用一个结构来表示pthread_t数据类型,所以可移植的操作系统实现不能将它比作整数处理。因此必须...
分类:
编程语言 时间:
2015-06-26 17:55:10
阅读次数:
183
线程的概念C++中的线程的Text Segment和Data Segment都是共享的,如果定义一个函数,在各线程中都可以调用,如果定义一个全局变量,在各线程中都可以访问到。除此之外,各线程还共享以下进程资源和环境:
文件描述符
每种信号的处理方式
当前工作目录
用户id和组id
但是,有些资源是每个线程各有一份的:
线程id
上下文,包括各种寄存器的值、程序计数器和栈指针
栈空间
errno变量...
分类:
编程语言 时间:
2015-06-19 18:56:42
阅读次数:
416
鉴于linux下线程的广泛使用 我们怎么查看某个进程拥有的线程id了现在很多服务的设计 主进程->子进程->线程(比如mysql,varnish)主进程负责侦听网络上的连接 并把连接发送给子进程 子进程派生线程去处理这些线程mysql(父进程460,子进程863) 1 460 425 ...
分类:
编程语言 时间:
2015-06-19 00:01:42
阅读次数:
576