线程有两种实现方式,继承自Thread和实现Runnable接口,线程分优先级,好像没有分类的
线程完整的生命周期有几种状态:新建 就绪 运行 阻塞 死亡
多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。
vs2013中配置多线程的使用环境 - qq_39907831的博客 - CSDN博客
https://blog.csdn.net/qq_39907831/article/details/78749465
【windows–进程和线程】多线程编程(比较完整的简单介绍) - 都江堰操作系统(DJYOS)-王建忠 - CSDN博客
https://blog.csdn.net/wangjianzhongfj/article/details/7334833
VS线程学习笔记(C++) - ZYunxin的博客 - CSDN博客
https://blog.csdn.net/ZYunxin/article/details/78299581
多线程使用的函数:
pthread_create_百度百科
https://baike.baidu.com/item/pthread_create/5139072?fr=aladdin
VS2013/MFC基于对话框编程:[18]多线程_百度经验
https://jingyan.baidu.com/article/597a064363ba76312b5243a1.html
(里面最后的代码有BUG)
改为下面:
void CMFCApplication1Dlg::OnBnClickedStartthread()
{
// TODO: 在此添加控件通知处理程序代码
if (flag)
{
flag = false;
GetDlgItem(IDC_StartThread)->SetWindowTextW(L"打开子线程");
}
else
{
flag = true;
AfxBeginThread(Thread1, this, THREAD_PRIORITY_ABOVE_NORMAL);
AfxBeginThread(Thread2, this);
GetDlgItem(IDC_StartThread)->SetWindowTextW(L"关闭子线程");
}
}
最高 THREAD_PRIORITY_HIGHEST 线程在高于正常优先级上两级上运行。
高于正常 THREAD_PRIORITY_ABOVE_NORMAL 线程在正常优先级上一级上运行。
正常 THREAD_PRIORITY_NORMAL 线程在进程的优先级类上正常运行。
低于正常 THREAD_PRIORITY_BELOW_NORMAL 线程在低于正常优先级下一级上运行。
最低 THREAD_PRIORITY_LOWEST 线程在低于正常优先级下两级上运行。
空闲 THREAD_PRIORITY_IDLE 对于实时优先级类线程在优先级16上运行对于其他优先级类线程在优先级1上运行。
实时 THREAD_PRIORITY_TIME_CRITICAL
AfxBeginThread的介绍/基本用法 - sd2131512的专栏 - CSDN博客
https://blog.csdn.net/sd2131512/article/details/6601228