美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成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在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        成人午夜激情视频| 中文字幕不卡一区| 日韩欧美在线观看强乱免费| 激情视频一区二区| 秋霞毛片久久久久久久久| 麻豆一区区三区四区产品精品蜜桃| 国产麻豆乱码精品一区二区三区 | 一本色道**综合亚洲精品蜜桃冫| 日韩一区不卡| 91久久精品一区二区三| 欧美日本国产一区| 精品粉嫩aⅴ一区二区三区四区| 久久久久久久网| 亚洲欧美日韩一区二区| 亚洲国产成人高清精品| 久久99国产精品免费网站| 国产91富婆露脸刺激对白| 成人精品一二区| 视频一区二区中文字幕| 国产亚洲欧美中文| 亚洲柠檬福利资源导航| 综合久久一区二区三区| 五月综合激情日本mⅴ| 国产麻豆成人精品| 国产精品初高中精品久久| 日韩欧美三级电影| 欧美精品久久天天躁| 国产精品久久久99| 奇米影视7777精品一区二区| av网站免费线看精品| 亚洲精品国产精品国自产观看| 欧美精品视频www在线观看| 中文字幕免费一区| 免费在线看一区| 91麻豆视频网站| 一本色道久久综合亚洲二区三区| 日韩欧美高清一区| 亚洲精品成a人| 粉嫩久久99精品久久久久久夜| 免费在线成人av电影| 欧美日韩国产综合一区二区| 国产精品国产精品国产专区不蜜| 日韩va亚洲va欧美va久久| 91在线观看高清| 欧美自拍偷拍午夜视频| 国产精品女同互慰在线看| 经典三级一区二区| 欧美性xxxx69| 久久久精品欧美丰满| 奇米888四色在线精品| 国产伦精品一区二区三区视频黑人| 91九色最新地址| 亚洲欧美电影一区二区| 丁香六月久久综合狠狠色| 亚洲精品自在在线观看| 国产日韩欧美精品在线| 久久国产麻豆精品| 日本一区免费| 国产精品乱人伦中文| 国产精品亚洲视频| 在线免费一区| 亚洲免费视频成人| 99久久精品免费看| 91久久精品一区二区| 亚洲另类春色国产| 91亚洲男人天堂| 欧美主播一区二区三区| 亚洲精品一卡二卡| 91女厕偷拍女厕偷拍高清| 欧美日韩中文字幕精品| 午夜精品福利在线| 久久精品日产第一区二区三区乱码 | 欧美理论一区二区| 久久精品亚洲精品国产欧美| 国产精品69久久久久水密桃| 亚洲一区三区视频在线观看| 亚洲色图欧美偷拍| av激情久久| 久久一区二区三区四区| 国产91精品在线观看| 欧美日韩视频一区二区| 视频一区在线播放| 亚洲免费久久| 午夜精品久久久| 在线观看欧美亚洲| 日韩精品成人一区二区三区| 日韩三级电影| 亚洲自拍偷拍综合| 日韩av图片| 亚欧色一区w666天堂| 日韩精品伦理第一区| 亚洲资源在线观看| 日韩偷拍一区二区| 亚洲成人免费观看| 亚洲砖区区免费| 青青国产91久久久久久 | 亚洲高清乱码| 亚洲午夜在线电影| 日韩精品不卡| 五月婷婷色综合| 色婷婷国产精品| 韩国成人精品a∨在线观看| 欧美片网站yy| 国产成人免费av在线| 欧美一级片在线看| 国产传媒久久文化传媒| 欧美xxx久久| 91毛片在线观看| 亚洲天堂免费在线观看视频| 欧美日韩国产三区| 日韩中文字幕91| 欧美视频一区二| 国产一区二区三区久久悠悠色av| 在线不卡的av| 成人伦理片在线| 亚洲国产精品激情在线观看| 九色综合婷婷综合| 亚洲观看高清完整版在线观看| 色先锋资源久久综合| 久久99精品国产麻豆婷婷 | 久久久99久久| 久久久久久国产精品免费免费| 一区二区理论电影在线观看| 在线免费亚洲电影| jiyouzz国产精品久久| 国产精品免费视频网站| 欧洲久久久久久| 精品一区二区三区在线观看国产| 91精品国产欧美一区二区成人| 91精品国自产在线观看| 亚洲综合色区另类av| 欧美日韩久久不卡| 成人国产1314www色视频| 亚洲国产日韩a在线播放性色| 欧美日韩一区高清| av在线不卡观看| 日韩精品一卡二卡三卡四卡无卡| 欧美一区二区三区色| 国内精品久久国产| 日韩福利视频导航| 精品福利视频一区二区三区| 免费在线观看91| 国产成人aaa| 一区二区三区日本| 91精品国产综合久久精品图片| 精品国产区在线| 久久99精品网久久| 中文久久乱码一区二区| 中文字幕一区二区三区5566| 99免费精品视频| 亚洲男人都懂的| 欧美乱熟臀69xxxxxx| 成人avav在线| 夜夜揉揉日日人人青青一国产精品| 欧美日韩中字一区| 国产精品18毛片一区二区| 亚洲aaa精品| 久久影院午夜片一区| 亚洲一区三区| 91成人伦理在线电影| 人人狠狠综合久久亚洲| 国产欧美精品区一区二区三区 | aaa欧美日韩| 亚洲v日本v欧美v久久精品| 日韩三级视频中文字幕| 天天久久人人| 91在线云播放| 久久国产麻豆精品| 亚洲欧美视频在线观看视频| 日韩欧美一区在线观看| 中文字幕一区二区三区在线乱码| av电影天堂一区二区在线观看| 日韩中文字幕一区二区三区| 国产精品久久久久久久久免费桃花 | 另类专区欧美蜜桃臀第一页| 欧美国产成人精品| 欧美日本韩国一区二区三区视频| 欧美成熟毛茸茸复古| 成人免费视频caoporn| 午夜a成v人精品| 最新不卡av在线| 精品日韩成人av| 欧美日本韩国一区二区三区视频| 日本一区不卡| 97久久精品人人做人人爽| 精品一区二区三区日韩| 香蕉久久夜色精品国产使用方法 | 蜜桃精品久久久久久久免费影院 | 国产午夜精品福利| 亚洲乱码一区二区三区三上悠亚| 91在线观看美女| 国产精品69久久久久水密桃| 亚洲午夜久久久久久久久电影网| 国产三级精品视频| 精品污污网站免费看| 欧美日韩精品综合| 91色porny| 91在线观看成人| 成人免费va视频| 国产一区二区精品久久99|