Tips

4Dの内部的なスタックサイズを変更する方法

日付2007/05/28
ID45348 (英語原文参照)
バージョン2004
プラットフォームMac & Win

各プロセスにおいて4Dのデフォルトスタックサイズが使われます。4D 2003 では Customizer Plus でデフォルトスタックサイズを変更する事ができました。しかし 4D 2004 には、スタックサイズを変更するための Customizer Plus がありません。

それでもスタックサイズを大きな値に変更しなければならないことがあるかもしれません。そのような時には次の方法を検討してください。

次のメソッドは、新しい値のスタックサイズを持ったリソースファイルを作成します。スタックサイズのリソースタイプは「4STK」です。この作例のデフォルトスタックサイズは Windows 用です。

■サンプルコードここから■

$resFile:=Create resource file("";"")
LONGINT TO BLOB(200000;$value;Native byte ordering )
SET RESOURCE("4STK";1;$value;$resFile)
SET RESOURCE NAME("4STK";1;"on event call";$resFile)

LONGINT TO BLOB(524288;$value;Native byte ordering )
SET RESOURCE("4STK";2;$value;$resFile)
SET RESOURCE NAME("4STK";2;"on serial port call";$resFile)

  ` Executed from User mode, new process in user mode
LONGINT TO BLOB(600000;$value;Native byte ordering )
SET RESOURCE("4STK";3;$value;$resFile)
SET RESOURCE NAME("4STK";3;"Exec on server, on client, from user mode, macro";$resFile)

  ` new process from the menu bar
LONGINT TO BLOB(1000000;$value;Native byte ordering )
SET RESOURCE("4STK";4;$value;$resFile)
SET RESOURCE NAME("4STK";4;"Exec process from menu";$resFile)

LONGINT TO BLOB(262144;$value;Native byte ordering )
SET RESOURCE("4STK";5;$value;$resFile)
SET RESOURCE NAME("4STK";5;"Server tasks";$resFile)

LONGINT TO BLOB(524288;$value;Native byte ordering )
SET RESOURCE("4STK";6;$value;$resFile)
SET RESOURCE NAME("4STK";6;"old backup";$resFile)

LONGINT TO BLOB(524288;$value;Native byte ordering )
SET RESOURCE("4STK";7;$value;$resFile)
SET RESOURCE NAME("4STK";7;"old restore";$resFile)

  ` web process
LONGINT TO BLOB(262144;$value;Native byte ordering )
SET RESOURCE("4STK";8;$value;$resFile)
SET RESOURCE NAME("4STK";8;"Web";$resFile)

LONGINT TO BLOB(1400000;$value;Native byte ordering )
SET RESOURCE("4STK";9;$value;$resFile)
SET RESOURCE NAME("4STK";9;"server event loop, cache, runtime explorer";$resFile)

LONGINT TO BLOB(1600000;$value;Native byte ordering )
SET RESOURCE("4STK";10;$value;$resFile)
SET RESOURCE NAME("4STK";10;"Apple event";$resFile)
CLOSE RESOURCE FILE($resFile)

■サンプルコードここまで■

例題とは異なる値を設定する時には、適切な値を LONGINT TO BLOB コマンドに渡してください。なお、変更できる値のIDは、3、4、8 の3種類だけです。他のIDは変更してはなりません。

MacOS X の場合は、スタックサイズは ID が 5、8 のものはデフォルトで「262144」に、それ以外は「524288」に設定されています。

作成したファイルを拡張子を「.RSR」または「.4XR」にした後に「4D Extensions」フォルダに入れ、その後で4Dアプリケーションを起動します。このファイルは、新しい設定の必要な4Dアプリケーションの全ての 4D Extensions フォルダに入れなければなりません。