线程和进程

92 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

线程和进程的区别

线程会共享此进程中的地址空间,但是每个进程之间的地址空间都是互相独立的。

线程会共享此进程中的资源,例如内存 cpu等等,但是进程之间的资源师独立存在的。

线程死则程序死,进程死不影响别的进程。

 

单个进程(相当于一个exe,并且运行在他专用的并且受保护的内存中) 多个线程实现并发 就是一个主线程 多个子线程实现并发

 

线程是进程的基本执行单位,一个进程中可以有许多个线程,并且所有任务都在线程中执行,由此可见进程中至少有一个线程。

开启一个线程

程序会默认开启以日奥线程 被称为主线程。


std::*thread* pThread = std::*thread*(&CSerialComUnit::ThreadFunc, this);

    pThread.*detach*();

pThread.join();

 

thread.Join

 

把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

 

join是阻塞当前线程,并等待object对应线程结束,该线程继续执行搜索.

一个线程只能join一次

 

一般用在,主线程等待子线程退出后,一起退出线程。

detach

是将线程从当前线程分离出去,即不受阻塞,操作系统会将其独立对待。

在创建子线程之后,detach该线程ID,该线程不受堵塞。


HANDLE m_hThread = *CreateThread*(NULL, 0, TheoryExamThreadFunc, this, 0, NULL);

*TerminateThread*(pThread, 0); 用于在线程外终止一个线程 强制终止

 

 

线程:

注意:创建一个线程 不做处理 会调用abort函数终止程序

std::*thread*(begin, this,Key, Path);

std::ref  用于包装引用  如果begin第一个参数是int& num  那这里的Key需要写成 std::ref(Key)

第一个参数是它的处理函数 后面是函数的参数

 

 

Class 不继承任何 如果当前类在main函数中应用 会在程序启动时初始化