ボーナスサイト  

タルのページ > ソケット通信でメモリ、ハンドルが増加し続ける、その対処方法



ソケット通信でメモリ、ハンドルが増加し続ける、その対処方法



Windowsで、ソケット通信を実装している際、
定期的に長時間動かしっ放しにすると、メモリが増加したり(メモリリーク)、ハンドルが増加したり(ハンドルリーク)、
いずれはパソコンの動作を大きく圧迫し、システムの動作がおかしくなります。
私の場合、スレッドが原因だったのですが、
意外とインターネットに情報がなかったことから、ここにUPします。



まず、ソケット通信のプログラムは、中略しつつ以下の通り。

#include 

main
{

{中略}

//スレッドを作成
hdl = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)ThFunc, (LPVOID)"送信:", 0, NULL);

{中略}

}

ThFunc
{

{中略}

// 送信
send(dstSocket, buffer, 1024, 0);

{中略}

return;
}


// 受信(参考)
//recv(dstSocket, buffer, 1024, 0);


上記だと、定期的にスレッドがsend関数で送り続けてくれるのですが、
Threadの終了時に、スレッドの終了処理を入れるのを忘れています。
CreateThread関数を使った際は、おまじないかよ!って感じで、
以下の2文が必要です。

//--------------
CloseHandle(hdl);
ExitThread(0);
//--------------

そんなの知らない!って感じで。
これがないと、ハンドルが解放されず残り続ける、
スレッドが終了しないからメモリが増加し続ける、
そしていずれパソコンが動かなくなります。



今度こそ忘れないようにするぞ!!!




Linux、gdbなどの備忘録などをまとめました。
VC++2015でBitmapを表示、サイズ変更表示する方法
MSVCP140.DLLやMSVCP140D.DLLがなくてexeが実行できない件
Linuxの備忘録
gdbの備忘録


動画パソコン教室!【楽ぱそDVD】タイピング上達編


動画パソコン教室『楽ぱそDVD』【タイピング上達編】

3980円。約111分DVD。
「
タイピングができるようになると、キーボードを見ながら文字を打つのにくらべて
タイピングが楽になり、無駄な時間もかからなくなります。
タッチタイピングには以下の大きな3つのメリットがあります。

・無駄な時間がかからなくなる。
・文字を打つのが楽になる。
・作業が「超」効率的になる。

タイピング上達のコツは以下の通りです。
--正しい指の使い方を覚える--
それぞれの指は打つキーの範囲が決まっていますので、
まずはそれらを覚えます。覚えるといっても
自転車の運転と同じで、繰り返し練習することによって
体(指)が勝手に覚えてくれるというイメージです。

正確に打てるようになれば、スピードは
後から勝手に上がってゆきますので、
まずは正確に打つ練習を行います。

--お仕事などでよく使う文字で練習する--
「お世話になっております。」などの
お仕事でよく使う文字から練習することによって
すぐに実務に活かすことができるので
モチベーションも上がり、効率よく身につけることができます。
そこで当講座では
お仕事でよく使う文字を中心に練習できるようになっています。
」
商品情報詳細はこちら。
動画パソコン教室『楽ぱそDVD』【タイピング上達編】



楽ぱそDVDは多種多様で
WEBプログラミングまで加えた【楽ぱそDVDプレミアム】や、
プログラミングのみのDVD、写真加工等を学ぶDVD、
パソコンソフトの作成方法を学ぶDVDなど、多種多様に揃っています。
全て、動画で楽にマスターすることができます。
詳細はコチラ。
楽ぱそDVD


その他参考書

Amazonでの商品情報詳細はコチラ。
   楽天での商品情報詳細はコチラ。