PCのCPUが備えるスレッドの数の目安

概要

ハードウェアの強さに基づいて処理の負荷を変更する必要が出ることもあることでしょう。
例えばCPUのスレッド数に応じて、プログラムで生成するスレッド数を調整するなどです。

可変長引数

  • C++側のソース

    CPUCheck.dllとしてコンパイル
    #include <windows.h>
    #include <string>
    #include <thread>
    
    #include "HmCppInvoke.h"
    
    using namespace Hidemaru;
    using namespace std;
    
    
    
    extern "C" __declspec(dllexport) THmNumber test() {
        Hm.funcDllExport();
    
        auto thread_num = std::thread::hardware_concurrency();
        try {
            Hm.Macro.doStatement(L"message", L"使えるスレッド数の目安は「" + to_wstring(thread_num) + L"」個です");
        }
        catch (exception& e) {
            // エラー内容をchar → wstring へ
            auto wide_what = Text::Encoding::cp932_to_utf16( e.what() );
            Hm.OutputPane.output(wide_what + L"\r\n");
        }
    
    
        return 1;
    }
    
  • 秀丸マクロ側のソース

    test.mac
    // CPUCheck.dllとしてコンパイルした
    #dll = loaddll(currentmacrodirectory + @"\CPUCheckCheck.dll");
     
    // 途中でマクロの文法や型の致命的エラーが発生した場合でもdllを解放する。
    if (version >= 898) { eval "keepdll #dll, 0"; }
     
    #r = dllfuncw(#dll, "test");
     
    freedll(#dll);