上大さんの
http://prograpark.ninja-web.net/CollectField/index.html#MCShMemにある
「簡単! プロセス間メモリ共有」です。
#include "MCShMem.hsp" #define ctype MAD( %1, %2 ) MemAreaDbl( %1 * ObjDblNum + %2 ) //共有メモリ ObjNum = 10 : ObjDblNum = 10 MemAreaName = "TestDbl" : MemAreaSize = ObjDblNum * 8 * ObjNum : ShMem_new Mem, MemAreaName, MemAreaSize if ( ShMem_getCtorErr( Mem(0) ) ) : if ( ShMem_isAlreadyAlloced( Mem(0) ) ) : else : dialog "共有メモリ作成に失敗しました。", 1, "ShMem" : end 1 ShMem_dupAll Mem(0), MemAreaDbl, 3 //画面 WindowSizeX = int( 400.0 * 1.75 ) : WindowSizeY = int( 400.0 * 1.75 ) screen 0, WindowSizeX, WindowSizeY, 1, ( ginfo_dispx - WindowSizeX ) / 2, ( ginfo_dispy - WindowSizeY ) / 2 font "", 12 *main await 15 stick Key, 0 if Key & 128 : end MAD( 1, 2 ) += 0.00001 redraw 0 color 255, 255, 255 : boxf : color repeat 4;ObjNum ObjNo = cnt repeat 8;ObjDblNum pos ObjNo * 50, cnt * 10 : mes MAD( ObjNo, cnt ) loop loop redraw 1 goto *main
ウィンドウの大きさや繰り返し処理の回数などで
CPU使用率が40〜60%くらいになるように負荷を調整してから
そのプログラムを実行し続けると、数10秒後くらいにCPU使用率が100%になります。
ウィンドウをドラッグしたりして、CPU使用率を100%にしたりしなかったりしても、なりやすいと思います。
同期していないことが原因なのでしょうか?
CPU使用率が上がってくることを防ぐ方法は何でしょうか?
HSPとは関係していなさそうな気もしますけど、よろしくお願いします。