中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

產(chǎn)品分類

當(dāng)前位置: 首頁 > 傳感測(cè)量產(chǎn)品 > 工業(yè)傳感器 > 溫濕度傳感器

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
溫濕度傳感器

基于WEC7的多核系統(tǒng)編程方法

發(fā)布日期:2022-04-26 點(diǎn)擊率:77

  • 關(guān)鍵詞:                                                                WEC7

  • 摘要:在多個(gè)程序同時(shí)執(zhí)行的情況下,支持SMP的多核系統(tǒng)具有比單處理器更好的性能,因?yàn)椴煌某绦蚩梢栽诓煌奶幚砥魃贤瑫r(shí)運(yùn)行,支持SMP還可以實(shí)現(xiàn)在一個(gè)核心上執(zhí)行硬實(shí)時(shí)應(yīng)用程序,而用戶界面(UI)或其它應(yīng)用程序可在另一個(gè)核心上運(yùn)行,以提高系統(tǒng)的效率。


  Windows Embedded Compact 7(WEC7)一個(gè)最重要的特性就是對(duì)多核處理器的支持(Symmetric Multi-Processing(SMP)),ESM6802是英創(chuàng)公司推出的基于Freescale  i.MX6DL雙核處理器的高性能工控主板,預(yù)裝正版WEC7嵌入式操作系統(tǒng),并且內(nèi)核啟用了對(duì)SMP的支持。在多個(gè)程序同時(shí)執(zhí)行的情況下,支持SMP的多核系統(tǒng)具有比單處理器更好的性能,因?yàn)椴煌某绦蚩梢栽诓煌奶幚砥魃贤瑫r(shí)運(yùn)行,支持SMP還可以實(shí)現(xiàn)在一個(gè)核心上執(zhí)行硬實(shí)時(shí)應(yīng)用程序,而用戶界面(UI)或其它應(yīng)用程序可在另一個(gè)核心上運(yùn)行,以提高系統(tǒng)的效率。


  WEC7提供了一組處理多核系統(tǒng)上線程和處理器調(diào)度的SMP API接口函數(shù):

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


  其中應(yīng)用程序常用的SMP API如下所示:


 GetCurrentProcessorNumber  獲取在調(diào)用此函數(shù)期間當(dāng)前線程正在運(yùn)行的處理器

 CeGetIdleTimeEx       獲取指定處理器的空閑時(shí)間

 CeGetProcessAffinity     獲取指定進(jìn)程的進(jìn)程關(guān)聯(lián)

 CeGetThreadAffinity     獲取指定線程的線程關(guān)聯(lián)

 CeGetTotalProcessors    獲取系統(tǒng)中的處理器核心總數(shù)

 CeSetProcessAffinity    為指定的進(jìn)程設(shè)置處理器關(guān)聯(lián)

 CeSetThreadAffinity     為指定的線程設(shè)置處理器關(guān)聯(lián)


  默認(rèn)情況下,WEC7系統(tǒng)會(huì)自動(dòng)的將系統(tǒng)負(fù)載分配到CPU的所有核心上運(yùn)行,應(yīng)用程序不需要做任何設(shè)置。但根據(jù)不同的應(yīng)用場(chǎng)景,應(yīng)用程序也可以利用SMP API手動(dòng)的設(shè)置每個(gè)進(jìn)程、每個(gè)線程在指定的CPU核心上運(yùn)行,這里以計(jì)算ESM6802 i.MX6DL CPU每個(gè)核心的負(fù)載為例,介紹WEC7 SMP API的使用方法。


  應(yīng)用程序首先通過CeGetTotalProcessors函數(shù)獲取當(dāng)前系統(tǒng)總的處理器(核心)個(gè)數(shù),然后根據(jù)CPU核心個(gè)數(shù)創(chuàng)建相同數(shù)量的CPUIdleMonitorThread應(yīng)用線程用于計(jì)算CPU負(fù)載,在創(chuàng)建線程后通過CeSetThreadAffinity函數(shù)將所創(chuàng)建的線程固定在指定的CPU核心上運(yùn)行。CPUIdleMonitorThread線程函數(shù)在執(zhí)行時(shí)先調(diào)用GetCurrentProcessorNumber函數(shù)取得執(zhí)行當(dāng)前線程的CPU核,而后再利用CeGetIdleTimeEx函數(shù)最終計(jì)算出每個(gè)CPU核心的負(fù)載率。完整的例子代碼如下:


  #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

推薦產(chǎn)品

更多
中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

      9000px;">

          天堂一区二区在线| 色综合中文综合网| 国产欧美日韩视频在线观看| 91在线视频官网| 99国产精品视频免费观看| 日韩福利电影在线| 亚洲在线视频免费观看| 日本美女视频一区二区| 粉嫩一区二区三区在线看| 色综合亚洲欧洲| 欧美一卡2卡3卡4卡| 欧美另类z0zxhd电影| 日韩精品一区国产麻豆| 久久精品一区八戒影视| 性做久久久久久久久| 成人免费看的视频| 欧美国产日韩a欧美在线观看| 国产日韩欧美一区二区三区综合| 亚洲免费观看高清完整| 精品在线一区二区三区| 欧美日韩中文字幕一区| 国产精品家庭影院| 黄一区二区三区| 日本伦理一区二区| 欧美激情资源网| 国产伦精品一区二区三区视频青涩| 91丨九色porny丨蝌蚪| 欧美精品一区二区三区视频| 久久九九国产精品| 秋霞电影网一区二区| 欧美日韩中文精品| 亚洲综合在线免费观看| 97久久精品人人做人人爽50路| 国产婷婷色一区二区三区四区 | 99精品视频一区| 国产精品成人午夜| 色妹子一区二区| 亚洲乱码中文字幕综合| 欧美日韩视频不卡| 日本怡春院一区二区| 欧美第一区第二区| 狠狠色丁香久久婷婷综| 亚洲欧美日韩一区二区| 91麻豆免费视频| 久久国产精品99久久人人澡| 日韩一区和二区| 国内精品国产三级国产a久久| 国产精品网站在线观看| 4hu四虎永久在线影院成人| 男人操女人的视频在线观看欧美| 精品伦理精品一区| 色婷婷精品久久二区二区蜜臂av| 亚洲夂夂婷婷色拍ww47 | 中文字幕成人av| 欧美日韩亚洲另类| 国产精品一区二区在线看| 中文字幕亚洲不卡| 欧美日本不卡视频| 成人黄色小视频在线观看| 综合婷婷亚洲小说| 欧美在线999| 精品亚洲aⅴ乱码一区二区三区| www亚洲一区| 国产精选一区二区三区| 色综合天天综合| 国产精品美女久久久久aⅴ| 成人精品高清在线| 国产精品自拍一区| 久久99国产精品成人| 天天色 色综合| 一区二区三区91| 国产精品电影一区二区| 欧美成人精品1314www| 欧美精品日韩一本| 91精品国产入口| 欧美一区二区视频免费观看| 91久久国产综合久久| 91影视在线播放| 不卡高清视频专区| 91视频xxxx| 日本韩国欧美一区| 欧美日韩国产高清一区二区 | 精品一区二区免费看| 精品一区二区三区久久| 免费欧美日韩国产三级电影| 日本欧美在线看| 福利一区在线观看| 成人av资源在线| 91精品国产综合久久香蕉麻豆| 欧美精品在线视频| 中文成人av在线| 亚洲6080在线| 国产成人在线视频免费播放| 成人av在线资源| 欧美网站大全在线观看| 欧美xingq一区二区| 中文天堂在线一区| 九色综合狠狠综合久久| 国产精品中文字幕一区二区三区| 在线观看区一区二| 久久亚洲欧美国产精品乐播| 亚洲国产综合视频在线观看| 蜜乳av一区二区三区| 国产91精品一区二区麻豆亚洲| 欧美人xxxx| 一区二区视频在线| 色综合天天性综合| 久久精品亚洲麻豆av一区二区| 亚洲电影第三页| 在线亚洲一区观看| 亚洲欧美在线观看| 成人免费av资源| 欧美激情一区二区三区蜜桃视频| 日本免费新一区视频| 国产精品一二三| 777xxx欧美| 国产一区二区免费看| 欧美一卡在线观看| 美女网站一区二区| 精品久久五月天| 国内精品国产成人国产三级粉色| 一本一道波多野结衣一区二区| 国产亚洲欧洲997久久综合| 精品一区二区三区蜜桃| 日韩一区二区三区观看| 日韩1区2区3区| 成人一区二区三区视频在线观看| jizz一区二区| 国产精品精品国产色婷婷| 国产成人精品亚洲777人妖 | 在线免费亚洲电影| 亚洲国产一区二区在线播放| 欧美性一区二区| 九九**精品视频免费播放| 亚洲男女毛片无遮挡| 欧美日韩视频一区二区| 奇米精品一区二区三区在线观看| 亚洲欧美国产毛片在线| 欧美亚洲禁片免费| 国产·精品毛片| 三级在线观看一区二区| 久久精品人人做| 色老汉av一区二区三区| 国产成人在线网站| 精品一区二区在线视频| 国产免费成人在线视频| 欧美日韩色一区| 欧美日韩国产免费一区二区| 高清在线观看日韩| 亚洲高清免费观看高清完整版在线观看| 成人爽a毛片一区二区免费| 国产美女一区二区| 色综合久久精品| 国产精品综合av一区二区国产馆| 日韩精品欧美精品| 一区二区视频在线| 亚洲精品日日夜夜| 日韩一级在线观看| 国产一区二区在线观看视频| 国产精品第四页| 精品蜜桃在线看| 欧美三级午夜理伦三级中视频| 日本成人中文字幕| 国产精品美女久久久久aⅴ | www.日韩大片| 香蕉影视欧美成人| 亚洲免费在线观看| 国产亚洲精品资源在线26u| 一本色道综合亚洲| 欧美日韩免费电影| 96av麻豆蜜桃一区二区| 91在线免费播放| 高清beeg欧美| 成人综合婷婷国产精品久久| 日韩精品一二三四| 免费观看日韩电影| 久久福利资源站| 国产成人免费高清| 在线观看视频91| 555www色欧美视频| 日韩欧美精品三级| 精品久久人人做人人爽| 欧美一级在线观看| 日韩亚洲国产中文字幕欧美| 国产亚洲精品精华液| 日韩视频一区二区| 国产欧美视频一区二区| 亚洲天堂久久久久久久| 亚洲欧美一区二区视频| 亚洲裸体在线观看| 男人的天堂亚洲一区| 国产成人免费视频网站| 欧美在线视频全部完| 久久综合给合久久狠狠狠97色69| 欧美国产日韩精品免费观看| 亚洲国产日韩a在线播放| 国产精品一区专区| 欧美日韩精品系列| 国产精品高潮呻吟久久| 日韩精品福利网|