• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

线程和进程的区别?

进程是应用程序实例的资源集合。每个进程中的资源都是独立的,一个进程的崩溃不会影响到另一个进程。

默认情况下,每个进程都有一个主线程。主线程可以创建多个子线程。每个线程中的资源是独立的,但是每个线程可以共享进程中的资源。

进程的启动和终止

//获取进程的信息

var过程=过程。get processes();//获取本地计算机的所有进程信息

var pro=process . getprocessedbyname('进程的名称')//获取指定的进程信息

//进程的开始

过程。开始(“记事本”);

//指定开始的路径。

过程。start(' c : \ demo . exe ');

//当需要携带额外参数时

Process mypro=new Process();

Mypro。StartInfo.FileName='文件名';

Mypro。StartInfo . Arguments=' parameters ';

mypro。start();

//或者

进程p=新进程();

ProcessStartInfo PS=new ProcessStartInfo(' notepad ');

页(page的缩写)StartInfo=ps

页(page的缩写)start();

线程基础

线程是进程中的基本执行单元。一个进程可以包含多个线程,进程中的资源是唯一的,每个线程中的资源也是唯一的,但是多个线程可以共享进程中的资源。

线程的用途

1.保持程序的用户界面处于响应状态。

2.同时处理多个请求

3.并行编程。

线程的滥用

既然线程在运行,就一定有代码,所以会占用资源,也就是说线程有开销成本。

简而言之,线程是非常复杂的,线程不一定会加快你程序的运行速度,有时甚至会减慢你整个程序的执行速度。

线程的创建

课程计划{

静态void Main(string[] args)

{

Thread first=new Thread(first Thread);

首先。start();

for(int I=0;i50我)

{

控制台。写(' x ');

}

控制台。阅读():

}

静态void FirstThread(){

for(int I=0;i50我)

{

控制台。写(' y ');

}

}

}

从运行代码的结果中可以得出以下结论:

1.2代码线程的执行顺序是随机的,不可预测的。

2.线程代码的执行就像一个人走路一样。他总是走走停停,但最终总能到达目的地。

线程的结束

终止线程:Abort()方法

线程的常用属性与方法

属性

说明

ManagedThreadId

获取托管线程的Id,用于唯一区分一个线程,主要在学习和调试线程时使用。

优先

稍后将详细解释线程的优先级。

线程调用

线程的状态,如未启动、运行、阻塞等。将在介绍线程执行原理时进一步说明。

is背景

或者获取或设置该线程是否是后台线程。

方法

说明

睡眠(毫秒)

让线程休眠一段时间,也就是暂停线程代码的执行。

加入()

让调用这个方法的线程被阻塞。

线程的优先级

线程可以通过其属性Priority来更改其优先级,这是ThreadPriority的枚举类型。它的值最低,低于正常,正常和高于正常。

,最高,默认值为normal。

如果一个线程的优先级设置为最高,并不一定意味着这个线程的代码就一定会先执行,还是要看具体情况。

//设置线程的优先级

var thread=新线程(back demo);

线程。优先级=线程优先级。正常;

线程的术语

主线程和辅助线程

工作线程有时被称为工作线程,它是在主线程中创建的。工作线程的结束不会导致整个程序的结束,但是如果主线程结束,那么整个程序也会结束。

前台线程和后台线程

前台线程会让所有程序都活下来,但后台线程不会。一旦所有的前台线程都执行完了,就会导致程序关闭,即使此时还有后台线程没有执行完。

//设置为后台线程

var thread=新线程(Demo);

线程。IsBackground=true

线程的数据传输

Thread对象的构造函数结构:

公共委托void ThreadStart();

公共委托void parameterized threadstart(object obj);

Thread对象的实例化

//方式一

int max=100

螺纹t=新线程(打印事件);

t.开始(最大);

静态无效打印事件(对象对象)

{

int max=Convert .toint 32(obj);

控制台。写(最大);

}

//方式二

int max=100

线程t=新线程(委托(最大对象){

int val=Convert .ToInt32(最大);

控制台。写(val);

});

t.开始(最大);

//方式三

int max=100

线程t=新线程(val={

int max=Convert .toint 32(val);

控制台。写(最大);

});

线程的执行原理

Link to comment
Share on other sites