程序 进程 线程 初次多线程
来源:互联网 发布:山东seo服务公司 编辑:程序博客网 时间:2024/05/17 10:42
一个程序可以对应多个进程 如 记事本可以打开好多个
一个进程也可以同时访问多个程序
每个进程有独立的虚拟地址空间,不同进程内,即使使用相同内存地址实际也是不同的物理内存
进程由两部分组成
1 内核对象
2 地址空间 包含所有的可执行模块 或 DLL模块的代码和数据 还包含 栈(stack)和 堆(heap)
真正执行代码的是线程,进程只是线程的容器,一个进程可能有多个线程,第一个线程称为主线程,就是main函数
线程在进程中创建,在进程的地址空间中分配内存,供线程的栈使用.,线程可以访问进程内核对象的所有句柄.
单个进程中的多个线程之间非常容易通信
线程内存开销比进程少,因此多采用线程,避免新进程
操作系统为每一个线程安排一定的CPU时间--时间片.每个线程在自己的时间内运行,因为时间片非常短,就好像多个线程同时运行一样
如果计算机拥有多个CPU,线程就真正意义上同时运行了
//简单举例======================================================================================
#include <Windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
DWORD WINAPI m_fun1Proc(LPVOID lpParameter);
void main()
{
cout<<"main thread is running"<<endl;
HANDLE hThread1;
hThread1=::CreateThread(NULL,0,m_fun1Proc,NULL,0,NULL);
for(char i='A';i<10+'A';i++)
{
cout<<i<<endl;
::Sleep(1000);
}
::CloseHandle(hThread1);
::_getch();
}
DWORD WINAPI m_fun1Proc(LPVOID lpParameter)
{
cout<<"thread1 is running"<<endl;
while(1)
{
static int x=0;
x++;
cout<<x<<endl;
::Sleep(1000);
}
return 0;
}
- 程序 进程 线程 初次多线程
- 程序 -- 进程 -- 线程 -- 多线程
- 线程,进程.程序,多线程区别
- 多线程的概念 程序,进程,线程
- Java多线程1—程序、进程、线程比较
- Java多线程1—程序、进程、线程比较
- 进程,线程,多线程概念
- 进程、线程与多线程
- 进程、线程与多线程
- 进程、线程与多线程
- ios 进程、 线程、多线程
- 进程、线程、多线程理论
- 线程、进程、多线程
- 多线程 线程 进程概念
- 进程、线程与多线程
- 进程和线程,多线程
- 进程/线程->多线程
- 进程,线程 ->iOS 多线程
- zynq虐我千百遍——第0篇 环境搭建--smb与nfs
- Problem 7.Reverse digits of an integer.
- bit-map再显身手:test.txt中有42亿个无符号整数, 求文件中有多少不重复的数(重复的数算一个)。限制: 可用内存为600MB.
- Sharepoint学习笔记—Site Definition系列--9、如何在Site Definition中整合Bing Map
- php(扩展到其他变成语言) self:: const static private protected public $this 函数参数访问类变量相关
- 程序 进程 线程 初次多线程
- leetcode-12Integer to Roman
- 解析Cron表达式
- 海志软件简介
- Android开发之控件属性
- su PK sudo
- sql中的group by 和 having 用法解析
- 细谈colorPrimary用于控制ActionBar背景色的好处
- 写给开发者:记录日志的10个建议