zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    微服务云部署
    监控linux服务器
    k6 常见测试模式说明
    k6 使用参考
    dremio 开发测试简单说明
    cube.js prepareCompiler api 试用
    cube.js schema 预编译处理
    cube.js driver 开发一些说明
    cube.js mssql driver 问题
    cube.js s3 FileRepository 新功能
  • 原文地址:https://www.cnblogs.com/sdk123/p/7068241.html
Copyright © 2011-2022 走看看