タグ

2021年7月5日のブックマーク (3件)

  • マルチスレッドを使用したアプリケーションについて

    マルチスレッド対応OSにおけるプログラム実行の単位のことで、Windowsはマルチスレッドをサポートしています。 プログラム(プロセスとも呼ぶ)の中で複数のスレッドを実行することができ、実行すると(プロセスを実行する)最低1つのスレッドが作成されます。このスレッドを特にプライマリスレッド(primarythread)と呼びます。 マルチスレッドを利用することにより、長時間かかる処理を実行してもプライマリスレッド等に影響を及ぼさない、また同時に複数のスレッドと同期を取りながら処理することが出来ます。 デメリットとしては、終了処理が少々面倒、また同期処理にバグがあるとデッドロックの発生、リソース競合発生の可能性があり、最悪の場合プログラムを強制終了させる必要が発生したり、例外関連のエラー等で処理がストップする可能性があります。

    babydaemons
    babydaemons 2021/07/05
    “_beginthreadex関数 _endthreadex関数”
  • Windowsアプリのメモリ使用量を取得する【Unity】 - Cooooding!!

    概要 UnityではないC#であればSystem.Environment.WorkingSetやProcess.GetCurrentProcess().WorkingSet64などを使ってアプリのメモリ使用量を取得できますが、Unityで作ったWindows Standaloneアプリでは何故か0を返します。調べても解決方法が見つかりませんでしたがC++でPluginを書いてみたら取得できたのでその方法を解説します。 メモリ関連の用語について まず実装の説明をする前にメモリ関連の用語について簡単に説明しておきます。 用語 意味 スワップ 物理的なメモリ上のデータをストレージ(HDDやSSD)上に退避させること ワーキングセット 物理的なメモリ上に確保されているメモリ量 プライベート ワーキングセット ワーキングセットのうちそのプロセスだけが使えるメモリ量 共有 ワーキングセット ワーキング

    Windowsアプリのメモリ使用量を取得する【Unity】 - Cooooding!!
    babydaemons
    babydaemons 2021/07/05
    PrivateUsage = コミットサイズ プライベートワーキングセット + スワップしたメモリ量
  • スレッド作成によるメモリリークについて

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 質問 2018年12月7日金曜日 8:53 お世話になっております。 VC;;2017(Intel Compilerでも)で基的なスレッド作成APIでメモリリークが発生します。 コードが以下の通りです。 #include <iostream> #include <Windows.h> #include <process.h> #include <Psapi.h> #include <thread> unsigned int __stdcall TestThread(void* p) { return 0; } DWORD WINAPI ThreadFunc(LPVOID arg) { return 0; }

    スレッド作成によるメモリリークについて
    babydaemons
    babydaemons 2021/07/05
    “CreateThread : スレッド関数内では、C言語ラインタイムが使えない(使うとリークします)/_beginthread(ex) : スレッド関数内では、(多くの)MFCクラスが使えない/AfxBeginThread : スレッド関数内で、C言語ランタイム、MFCとも使える”