美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產品分類

當前位置: 首頁 > 傳感測量產品 > 工業傳感器 > 溫濕度傳感器

類型分類:
科普知識
數據分類:
溫濕度傳感器

基于WEC7的多核系統編程方法

發布日期:2022-04-26 點擊率:78

  • 關鍵詞:                                                                WEC7

  • 摘要:在多個程序同時執行的情況下,支持SMP的多核系統具有比單處理器更好的性能,因為不同的程序可以在不同的處理器上同時運行,支持SMP還可以實現在一個核心上執行硬實時應用程序,而用戶界面(UI)或其它應用程序可在另一個核心上運行,以提高系統的效率。


  Windows Embedded Compact 7(WEC7)一個最重要的特性就是對多核處理器的支持(Symmetric Multi-Processing(SMP)),ESM6802是英創公司推出的基于Freescale  i.MX6DL雙核處理器的高性能工控主板,預裝正版WEC7嵌入式操作系統,并且內核啟用了對SMP的支持。在多個程序同時執行的情況下,支持SMP的多核系統具有比單處理器更好的性能,因為不同的程序可以在不同的處理器上同時運行,支持SMP還可以實現在一個核心上執行硬實時應用程序,而用戶界面(UI)或其它應用程序可在另一個核心上運行,以提高系統的效率。


  WEC7提供了一組處理多核系統上線程和處理器調度的SMP API接口函數:

  https://msdn.microsoft.com/en-us/library/gg154433(v=winembedded.70).aspx


  其中應用程序常用的SMP API如下所示:


 GetCurrentProcessorNumber  獲取在調用此函數期間當前線程正在運行的處理器

 CeGetIdleTimeEx       獲取指定處理器的空閑時間

 CeGetProcessAffinity     獲取指定進程的進程關聯

 CeGetThreadAffinity     獲取指定線程的線程關聯

 CeGetTotalProcessors    獲取系統中的處理器核心總數

 CeSetProcessAffinity    為指定的進程設置處理器關聯

 CeSetThreadAffinity     為指定的線程設置處理器關聯


  默認情況下,WEC7系統會自動的將系統負載分配到CPU的所有核心上運行,應用程序不需要做任何設置。但根據不同的應用場景,應用程序也可以利用SMP API手動的設置每個進程、每個線程在指定的CPU核心上運行,這里以計算ESM6802 i.MX6DL CPU每個核心的負載為例,介紹WEC7 SMP API的使用方法。


  應用程序首先通過CeGetTotalProcessors函數獲取當前系統總的處理器(核心)個數,然后根據CPU核心個數創建相同數量的CPUIdleMonitorThread應用線程用于計算CPU負載,在創建線程后通過CeSetThreadAffinity函數將所創建的線程固定在指定的CPU核心上運行。CPUIdleMonitorThread線程函數在執行時先調用GetCurrentProcessorNumber函數取得執行當前線程的CPU核,而后再利用CeGetIdleTimeEx函數最終計算出每個CPU核心的負載率。完整的例子代碼如下:


  #include "stdafx.h"

  // time in seconds to run the monitor thread

  #define IDLE_MONITOR_TIME   100


  HANDLE g_hMonitorThreads[4];


  UINT32 CPUIdleMonitorThread(PVOID pContext)

  {

      UINT32 nCPUId = ((UINT32*)pContext)[0];

      UINT32 nRunTime = ((UINT32*)pContext)[1];

      UINT32 nIdleBefore, nIdleAfter, nIdleDiff, nIdlePercent;

      UINT32 nReturn = ERROR_SUCCESS;


     LARGE_INTEGER pcBefore = { 0, 0 };

      LARGE_INTEGER pcAfter = { 0, 0 };

      LARGE_INTEGER diff;

      LARGE_INTEGER freq;


      RETAILMSG(1, (L"[CPU%d] Run monitor thread for %d seconds ", nCPUId, nRunTime));


     // The processor number is a 1-based index.

      QueryPerformanceFrequency(&freq);


      while (nRunTime > 0)

      {

          nCPUId = GetCurrentProcessorNumber();

          CeGetIdleTimeEx(nCPUId, (LPDWORD)&nIdleBefore);


          QueryPerformanceCounter(&pcBefore);

          Sleep(2000);

          QueryPerformanceCounter(&pcAfter);


         CeGetIdleTimeEx(nCPUId, (LPDWORD)&nIdleAfter);


          diff.QuadPart = (pcAfter.QuadPart - pcBefore.QuadPart) * 1000 / freq.QuadPart;

          nIdleDiff = nIdleAfter - nIdleBefore;

          nIdlePercent = nIdleDiff / 20;


          RETAILMSG(1, (L"[CPU%d] Sleep: 2000 ms (actual:%d ms)  Idle: %03d ms (CPU%d = %d%%) ",

               nCPUId, diff.LowPart, nIdleDiff, nCPUId, 100 - nIdlePercent));

          nRunTime--;

      }


     SetEvent(g_hMonitorThreads[nCPUId - 1]);

      return nReturn;

  }


  int WINAPI WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,

                     LPTSTR     lpCmdLine,

                     int       nCmdShow)

  {

     UINT32 nCPUCount;

      UINT32 nTemp = 0;

      UINT32 i;

      UINT32 nParam[8] = { 1, IDLE_MONITOR_TIME, 2, IDLE_MONITOR_TIME, 3, IDLE_MONITOR_TIME, 4, IDLE_MONITOR_TIME };


      nCPUCount = CeGetTotalProcessors();


      for(i = 0; i < nCPUCount; i++)

          g_hMonitorThreads[i] = CreateEvent(NULL, TRUE, FALSE, NULL);

 

      nTemp = 1;


     CeSetThreadAffinity(GetCurrentThread(), 1);


      for (i = 1; i < nCPUCount; i++)

      {

          HANDLE hThread = CreateThread(

              NULL,

              0,

              (LPTHREAD_START_ROUTINE)CPUIdleMonitorThread,

              &nParam[i * 2],

              CREATE_SUSPENDED,

              NULL);


         if (NULL != hThread)

          {

              CeSetThreadAffinity(hThread, i + 1);

              ResumeThread(hThread);

              Sleep(0);

              CloseHandle(hThread);

              nTemp++;

          }

          else

          {

              SetEvent(g_hMonitorThreads[i]);

          }

      }


      CPUIdleMonitorThread(&nParam[0]);


      Sleep(2000);

      for(i = 0; i < nCPUCount; i++)

          WaitForSingleObject(g_hMonitorThreads[i], (IDLE_MONITOR_TIME + 5) * 1000);


      RETAILMSG(1, (L"[CPULOAD] Number of CPUs monitored: %d ", nTemp));


      return 0;

  }


下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

推薦產品

更多
美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        午夜精品在线视频一区| 亚洲六月丁香色婷婷综合久久| 日韩视频在线观看国产| 国产chinese精品一区二区| 成人91在线观看| 91在线视频播放地址| 99久久99久久久精品齐齐| 99re在线国产| 国产免费一区二区三区| 另类视频在线观看+1080p| 欧洲亚洲一区二区| 色欧美日韩亚洲| 欧美肥妇bbw| 国产亚洲精品久| 亚洲视频狠狠干| 日韩国产精品久久| 国产乱码精品一区二区三| 91在线视频在线| 欧美午夜视频在线| 日本韩国欧美在线| 精品国产乱码久久久久久1区2区| 中文字幕国产精品一区二区| 亚洲二区在线视频| 国产精品影视天天线| 国产 高清 精品 在线 a| 涩涩日韩在线| 777亚洲妇女| 中文av字幕一区| 无吗不卡中文字幕| 国产精品77777| 99re视频| 色综合久久88色综合天天| 日韩一本二本av| 亚洲欧洲精品天堂一级 | 精品视频在线视频| 26uuu久久综合| 亚洲综合在线电影| 国产精一品亚洲二区在线视频| 97久久夜色精品国产九色| 午夜精品区一区二区三| 欧美一级久久久| 亚洲精品视频在线观看网站| 经典三级在线一区| 九色91在线视频| 欧美一区二区三区四区高清| 亚洲色图在线播放| 国产精品一区二区三区网站| 蜜桃精品久久久久久久免费影院 | 欧美综合77777色婷婷| 欧美一区二区播放| 性久久久久久久久久久久| 91免费看片在线观看| 中国人体摄影一区二区三区| 国产丝袜欧美中文另类| 久久国产精品无码网站| 女同一区二区| 欧美精品一区二区三区蜜桃| 首页欧美精品中文字幕| 国产精品久久精品国产| 69久久99精品久久久久婷婷| 亚洲国产一二三| 99视频在线| 日韩欧美国产午夜精品| 免费一级欧美片在线观看| 久久精品国产精品国产精品污| 欧美一级在线免费| 日本aⅴ亚洲精品中文乱码| 国产伦精品一区二区三区照片| 欧美精品电影在线播放| 午夜欧美2019年伦理| 国产精品v欧美精品∨日韩| 91精品国产综合久久蜜臀| 首页国产丝袜综合| 欧美一区亚洲二区| 国产精品久久久久久一区二区三区 | 久久免费看少妇高潮| 毛片av一区二区| 亚洲ai欧洲av| 亚洲精品中文在线影院| 国产精品入口免费| 国产调教视频一区| 91在线观看污| 久久日一线二线三线suv| 国产九色精品成人porny | 99porn视频在线| 日韩欧美不卡一区| 国产一区二区不卡老阿姨| 中文字幕一区二区三区四区五区六区 | 亚洲va韩国va欧美va| 久久国产精品精品国产色婷婷| 国产亚洲1区2区3区| av在线播放不卡| xnxx国产精品| 97精品国产露脸对白| 精品久久一区二区三区| 成人午夜视频在线| 日韩欧美在线综合网| 风间由美中文字幕在线看视频国产欧美| 精品视频一区三区九区| 精品综合免费视频观看| 欧美蜜桃一区二区三区| 国产精品一区不卡| 日韩美一区二区三区| 成人av电影在线网| 久久亚洲捆绑美女| 成人av蜜桃| 亚洲欧美偷拍卡通变态| 精品一卡二卡三卡四卡日本乱码| 中文字幕一区日韩精品欧美| 精品一区二区视频| 一区二区三区.www| 亚洲午夜精品一区二区| 久久精品国产精品亚洲综合| 欧美日韩国产精品自在自线| 国产美女一区二区| 精品国产乱码久久久久久蜜臀| 97国产精品videossex| 亚洲国产精品ⅴa在线观看| 黄色99视频| 视频一区二区中文字幕| 欧美日韩国产综合一区二区三区| 国产高清在线精品| 国产亚洲人成网站| 久久伊人资源站| 丝袜美腿成人在线| 91精品国产欧美一区二区| 成人av集中营| 亚洲婷婷在线视频| 色综合久久中文综合久久牛| 国产一区二区三区精品视频| 国产亚洲一区二区三区| 区一区二区三区中文字幕| 日本强好片久久久久久aaa| 在线综合视频播放| 国产成人看片| 污片在线观看一区二区| 日韩欧美二区三区| 欧美日韩一区在线播放| 国产一区二区三区在线看麻豆| 国产视频一区二区在线观看| 欧美午夜精品理论片a级大开眼界| 青青草一区二区三区| 欧美精品一区二区三区蜜桃视频| 欧美日韩另类综合| 国产精品资源在线| 亚洲精品视频免费观看| 777午夜精品视频在线播放| av一区观看| 免费观看在线综合色| 久久九九99视频| 色综合天天综合| 97超级碰碰| 久久97超碰国产精品超碰| 国产欧美日韩在线看| 色猫猫国产区一区二在线视频| www.色精品| 日韩高清不卡一区二区三区| 国产婷婷色一区二区三区四区| 综合久久国产| www 成人av com| 国内精品伊人久久久久av一坑| 欧美国产一区在线| 欧美日韩激情在线| 欧美高清性xxxxhd| 成人免费视频app| 婷婷成人综合网| 欧美国产综合色视频| 9191久久久久久久久久久| 欧美下载看逼逼| 91原创在线视频| 激情欧美一区二区| 亚洲一区在线免费观看| 久久久91精品国产一区二区三区| 在线精品视频一区二区三四| 国外成人免费视频| 国产成人精品免费网站| 奇米在线7777在线精品| 中文字幕日本不卡| 日韩欧美国产一区二区三区| 在线视频欧美精品| 天堂av一区二区| 激情小说综合区| zzijzzij亚洲日本少妇熟睡| 韩国午夜理伦三级不卡影院| 亚洲在线一区二区三区| 久久久久久黄色| 91精品国产麻豆| 91国产丝袜在线播放| 欧美一区二区在线| 国产一区二区三区四区五区在线| 成人国产精品免费观看| 国产一区二区在线视频| 日本欧美在线看| 亚洲电影中文字幕在线观看| 亚洲色图.com| 亚洲欧洲av在线| 国产精品国产馆在线真实露脸| 精品国产乱码久久久久久蜜臀| 91精品国产综合久久香蕉麻豆 | 久久久久久久久久电影|