ハードウェアの強さに基づいて処理の負荷を変更する必要が出ることもあることでしょう。 例えばCPUのスレッド数に応じて、プログラムで生成するスレッド数を調整するなどです。
#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; }
// CPUCheck.dllとしてコンパイルした #dll = loaddll(currentmacrodirectory + @"\CPUCheckCheck.dll"); // 途中でマクロの文法や型の致命的エラーが発生した場合でもdllを解放する。 if (version >= 898) { eval "keepdll #dll, 0"; } #r = dllfuncw(#dll, "test"); freedll(#dll);