• 015 线程的状态


    线程的状态
    启动
      ○ CONTEXT
      ○ 使用计数 = 2
      ○ 暂停计数 = 1 -1 =0 (可以进入CPU的调度,当前线程是可执行状态)
    运行
      ○ CPU调度
      ○ 执行我们的函数
      ○ 时不时的暂停我们的线程 -> 写入 CONTEXT
      ○ 读取CONTEXT
    挂起
      ○ 暂停线程的运行
      ○ SuspendThread()
      ○ 调用函数 暂停计数+1

    等待 休眠
      ○ Sleep(100); 不会改变我们的暂停计数
        ○ 剩余的时间片,放弃剩余的时间片。
        ○ 等待100ms
      ○ Sleep(INFINITE);永远等待
        ○ 一直等待到进程死亡
        ○ 才会退出线程
      ○ Sleep(0)
        ○ 放弃当前线程的时间片
      ○ SwitchToThread();
      ○ CPU继续执行 100毫秒 并非实时的 无限接近于100毫秒
    休眠
    消亡

    CPU挂起

    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <process.h>
    
    unsigned int  WINAPI ThreadProc(
        _In_    LPVOID lpParameter
    )
    {
        int nNum = 0;
        while (true)
        {
            _tprintf(TEXT("%d
    "),nNum++);
        }
        return 0;
    }
    
    int main()
    {
        HANDLE hThread = (HANDLE)_beginthreadex(nullptr, 0, ThreadProc, nullptr, 0, nullptr);
        Sleep(100);
        SuspendThread(hThread);    //暂停技术+1    //返回值 挂起次数第一次为0 在调用一次为2
        Sleep(1000);
        ResumeThread(hThread);        //暂停技术-1
        WaitForSingleObject(hThread, INFINITE);
        return 0;
    }

  • 相关阅读:
    vue 设置初始值 为null 进行文字长度判断
    js ajax传参 定义的参数和传的参数不一样
    js 删除字符串前几位字符,和删除最后一个字符
    js splice 删除数组 相邻的数据满足条件未被删掉
    js 将对象增加新键值对
    js 将数组添加key
    js 删除掉数组中的 ' '
    js 如何删除数组中指定对象及其值
    接口
    分支结构
  • 原文地址:https://www.cnblogs.com/sdk123/p/7068241.html
Copyright © 2020-2023  润新知