[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/27 01:12 / Filesize : 247 KB / Number-of Response : 962
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Lua】組み込み系言語総合 その2【Squirrel】



1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ]
LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合【Squirrel】
pc12.2ch.net/test/read.cgi/tech/1205208141/

■過去スレ
その3 pc11.2ch.net/test/read.cgi/tech/1160799232/
その2 pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html

221 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 12:03:44 ]
>>216
ニューメリカルレシピ・イン・C っていう本にその逆のことが書いてあったな。
一般的な数学では添え字は 1 からはじまるのに C だと 0 からだから困ると。
で、その本では添え字を 1 から始めるように、配列のポインタを 1 つ前にずらしてた。

つまり、int arr[10] みたいな配列をつくったら、
int *arr1 = arr - 1 と定義しておけば、arr1[1]、arr1[2]、……、arr1[10]
っていうふうにアクセスできる。

222 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 12:29:33 ]
Fortranな人のための小ワザだけど、
厳密には、配列の範囲から外れたところを指してるポインタに
まつわる動作は未定義なので、仕様に煩い人には不評。
(C FAQ より ttp://c-faq.com/aryptr/non0based.html )

223 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:11:48 ]
>>215
>>219
SquirrelとかAngelScriptじゃダメなの?

224 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:16:16 ]
そもそも0とか1とかいうマジックナンバーを使ってはいけない。
パッチではなく、リファクタリングするべき。
#define FIRST 1

225 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:16:36 ]
言語はそのままの仕様で使うのが無難ではあるよなー

226 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:21:29 ]
>>223
Lua以外にするとメモリ消費や処理速度が劣ってしまうのが嫌で
やっぱり仕様に従って使うしかないですか

227 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 14:04:47 ]
      ∩∩ ;
      ;|ノ||`      ┬-‖
   __,/●●| __    | | ‖     L...Lua..
   | ; |`(_●)/ ミ   . Y ‖
   | .彡|∪||、 , .|     |  ‖
  /:~ ̄ ̄ ̄ ̄:/.|    |  ‖
  ,|:::::.   .......::/>>    /  ‖
 /.:::::  .. ...::::::|'(/\_/  ‖
../:.:::    .. :.:::/.:/     /‖\
/.:::.   ....:::..:::/.:/
' ̄ ̄ ̄ ̄ ̄ _/
|_| ̄ ̄ ̄ ̄|_|

228 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:31:00 ]
BASICでも配列作ると0からなのに・・・・

229 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:57:15 ]
ここは中間をとって0.5に



230 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:28:51 ]
BASIC はたいていの実装が OPTION BASE とかで配列の開始インデックスを変更できるぜ

231 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:37:21 ]
もう連想配列だけにしちゃおうぜ


232 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:24:33 ]
>>230
なつかしすぎてどっかから鼻血でたわw

233 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:41:07 ]
0からってのはポインタ的な発想で好かんわ

234 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 13:50:08 ]
Pythonでシステム組んでるが、配列のインデクスが何番からかほとんど意識することないな。
for文ではそのままイテレータをまわしてしまうし。

235 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 19:50:43 ]
Lua標準だと1ステートあたりのスタックサイズは1Kだけど
消費を抑えたくて手動設定する場合
どれくらいの値がベストだろう?

236 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:42:36 ]
デフォで使用メモリ量が80MBを越える俺の構築した処理系からすれば、
数十キロバイトの仮想スタックなんて小さな問題だ。

237 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 01:41:47 ]
新しい必殺技を思いついた
>>236 に捧ぐ
"O"zapper!!

238 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 03:42:20 ]
次こそはうまくやりますコンピューター!

239 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:42:49 ]
>>232
「どっかから」てお前はケツから鼻血がでるのかよw

>>236
RubyでフレームワークとしてRailsを搭載したかのようなメモリ消費量だなおいw



240 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:52:53 ]
>>239
IronPythonがもりもりメモリ食うからな。
ほんと環境にやさしくないスクリプトエンジンだぜ。

まあ、C#で組むにはこれが一番「普通」なスクリプティングエンジンなので。

241 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 21:24:50 ]
IronPythonすげえwそんなにメモリ食いすぎなのかw

242 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 02:42:38 ]
luaについてちょっと質問なんだけど、
乱数を表示させたあとに、もう一度同じプログラムを実行すると
シード値が変わらずにまったく同じ乱数が表示されてしまう。
どうすればこのシード値を初期化して、実行するたびに違う乱数を
表示させられるの?

243 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 02:54:44 ]
それこそシード値を「適当に」初期化してやればいい。
一般的には、タイマーの値とか、ユーザ入力の時間差を測定したりして、それを srand() につっこんで対応する。


244 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 03:04:26 ]
>>243
レスありがとう

まだはじめたばっかりでホームページさがしながらの手探り状態なんだけど、
math.random()で()の中に1から10までの値をいれるよね?
そしたらそれ以外にmath.randomseedを書けばいいってこと?

245 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 03:16:42 ]
そう。

プログラムの頭で math.randomseed(os.time()) とでもしておきなされ。


246 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 03:22:08 ]
できました!
本当にありがとうございました。

これからもっと勉強してきます

247 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 13:48:26 ]
実行中のLuaスクリプトを停止させるには
lua_errorで強制的に例外を発生させる方法以外に
何かありませんか?

1つのスクリプトを実行する一般的な使い方なら問題ないのですが
スレッド毎で同時に複数のスクリプトを実行させる場合
リソースの保護をしても違うスレッドからスクリプト(ステート)を閉じようとすると
原因不明のエラーで強制終了してしまいます

248 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:52:00 ]
>>247
コルーチン化していつでも終了できるように作っておくのがLWL流 :)

249 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 14:57:04 ]
つlua_yield



250 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 15:03:25 ]
>>248
肝心な部分を説明し忘れてました
私が今作ってるのは>>190の方が言われたような
luaを同時実行させてプラグイン機能を実現するもので

それをコルーチンでやるとなると実質スレッド1つで
全処理をすることになるのでCPUリソースの消費が激しく
ステートも一つだから変数の重複などが問題になって
それらを回避するためにマルチスレッド上で
それぞれスクリプトを動かす必要があるのです

しかしあるプラグインでエラーが起こり
それに関連するスクリプトを全部停止(解放)したい時
現スレッドから他スレッドのステートを閉じようとすると
強制終了につながるエラーが起きてしまう状況で

251 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 15:35:28 ]
>>250
ちがうよー。
コルーチンというのはプログラマが入力した任意のタイミングで
動作を中断できるようにした仕組み(yield)のことであって、
それを使って複数の仕事を1スレッドで同時に実行というのは二次的なものに過ぎないんだよ。

したがって複数のスレッドで実行しても(エンジンの実装に問題が無いなら)問題ない。

で、中断されて制御が戻ってきたタイミングでそのまま開放してあげればいい。

252 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 15:54:24 ]
>CPUリソースの消費が激しく
>変数の重複などが問題

>強制終了につながるエラーが起きてしまう状況

戦況が悪化してるが、今さら撤退する気はない
典型的なパターンですね

253 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 16:07:52 ]
>>250
lua はスレッドセーフじゃないから、別スレッドからの制御は根本的にできないよ

コルーチンでうごかせってのは、呼び出しに lua_call を使うんじゃなくて、lua_resume と while
ループでスクリプトを駆動させて、スクリプト側では定期的に yield するようにすれば、
その区切りで安全に実行中断できるよ、ってこと。

それぞれのスクリプトはそれぞれのスレッドで立ち上げて、ほかのスレッドから停止させるときは
フラグをたてておいて、そのフラグがたってたらwhileを抜けて速やかにスレッドを自滅させる
ような書き方にする。

コルーチン駆動&記述が面倒ってことなら、裏技チックだけど、lua_sethook を使って、
関数呼び出し、ないしは行ごとに終了フラグチェックさせて、もしフラグたってたら
lua_error で速やかにスクリプトを abort させるという手もある。
残念ながらhookにユーザパラメータは存在してないので、変数かレジストリに
参照するフラグのCポインタを格納しておく、とかの小ざかしいテクが必要。

254 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 16:12:26 ]
なるほど
Luaスクリプトを同時実行する際は
マルチスレッドのみでの制御は無理ということですか
改めてコルーチンについて勉強し直してきます
どうも助かりました


255 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 17:04:30 ]
スレッドって名前が紛らわしいな。
関係ないかもしれないが、非推奨な手法を使いにくくするとかいう話を思い出した。

256 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:15:46 ]
Luaは普通の呼び出しと、lua_yieldで一時停止して再度呼び出す場合とで使う関数が違うのが面倒くさくて逃げちゃったな俺…
AngelScriptだと同じ呼び出し方でOKなんだよなぁ…

257 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 05:43:27 ]
>>256
coroutine.wrap をつかえば、普通の関数呼び出しと同じように resume もできるよ。


258 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 11:25:20 ]
変態文法&バイトコードがエンディアン依存なluaを広めるのやめようぜ
手間が増えてスクリプトにしてる意味がねえよ

259 名前:デフォルトの名無しさん [2009/10/15(木) 11:27:46 ]
luaって、oracleにアクセスするライブラリないですか?



260 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:50:58 ]
JavaからLuaを使うことってできる?

261 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:24:54 ]
JavaからC言語を使うことってできる?

262 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 10:56:47 ]
>>259
www.keplerproject.org/luasql/
Lua for Windows についてくるよ。使ったことないけど。
luaforwindows.luaforge.net/

263 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 11:14:25 ]
>>259
というかそんな『重い』プロダクトを扱うなら、
素直にPythonやRubyなんかのライブラリの整備されたスクリプト言語使ったほうがよくなくね?

264 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 11:16:27 ]
まあそんなこといいつつ、俺もPythonで軽量なDBラッパー探したら見つからなかったので
ActiveRecord互換のORMライブラリを自作したんだがな。

265 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 11:24:25 ]
>>258
Luaの速度に魅力を感じてる人がなんとなく多い気がするね。
あとは、リスとかに比べるとドキュメントの多さなんかが人気の秘訣?

266 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 11:27:28 ]
某MMORPGで使っているからだったりして。

267 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 12:17:07 ]
ああ、別にROに限らず採用実績っていうのは使う基準に十分なるだろうし。

268 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 12:25:08 ]
組み込みに求められるのは速度と少ないメモリ消費だから
多少なりと癖があろうとlua使っちゃうんだよね
他に比べて採用例も多い分、多言語との連携も充実してるし

269 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 12:53:36 ]
ORMの次は、C/C++とスクリプトのマッピングだ、というアナロジーだけで
動いてるやつがいるような気がしてきた



270 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:04:45 ]
>>組み込みに求められるのは速度と少ないメモリ消費だから
なんで? 別にそれは前提条件にならないと思うけど。

オレはゲームシステムを組んでいるところだが別にメモリ消費量は大して気にしてないぞ。
速度は大切だが、どうせ1スレッドでは間に合わなくなるのでマルチスレッド化するし、
ボトルネックはスクリプト部分ではないので問題ない。

271 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:14:26 ]
ヤマハ RTX1200 に Lua 実行機能搭載だってさ
ttp://www.rtpro.yamaha.co.jp/RT/docs/lua/index.html

272 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:17:06 ]
AngelScript使おうぜ

273 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:37:08 ]
まぁ、なんだかんだでluaが一番なんだけどね

274 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 13:58:37 ]
>>273
俺はそうは思わないけどな……。
触ったことあるけど文法がちょっと癖あるし、整数型がないし。

Pythonの方がよっぽどいい。

275 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 14:01:01 ]
>>274
いやいや、個人的にではなく一般的にね
上でも出てるけど書籍や採用例が多いとかさ

276 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 16:06:28 ]
このスレはIronPython使いと、AngelScript使いが一人ずつ常駐してるんだなw

277 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 17:20:01 ]
こんだけで組み込み言語として使えるわけで、
ttp://alpha.mixi.co.jp/blog/?p=236

でもphpに組み込みってなんだ。
ttp://www.mediawiki.org/wiki/Extension:Lua
まあPECL拡張は2年前で止まってるみたいだけど

278 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 00:50:19 ]
PHPはインタプリタを組み込めないライセンスだからなー。
この制限さえなければ今までなかった用途が色々できると思うんだけど。

279 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:11:07 ]
>>278
??どういうこと?



280 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:38:39 ]
>>279
うう〜ん……。問われたので改めて調べてみたが、どうやら間違った認識が一部あったようだ。
PHPインタプリタ本体はPHP License 3.01で配布されていて、
こいつは
・配布するソースコードまたはドキュメントに著作権表示、ラインセンス本文を記載すること
・PHP Groupから許可を得ずにPHPという名前を使用しないこと
(PHP Fooやphpfooはだめ。Foo for PHPはOK)
・文言の表示強制("This product includes PHP, freely available from <www.php.net/>")

だけだな。インタプリタ自体を内蔵することは問題なさそう。
契約なしに内蔵できないのはZendライブラリなんだそうな。
(Zend Frameworkは修正BSDライセンス。Zendライブラリとは何ぞや?)

281 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 23:30:49 ]
ここでzlibライセンスのSquirrelとAngelScriptの出番ですね!


282 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 01:54:10 ]
luaスクリプト上でコルーチンを作成をした場合は
明確的に破棄する方法はないようなのだけどC側から

//コルーチンを実行するのスレッド(ステート)を作る
lua_State *L = lua_newthread(luaL_newstate());

//C側からコルーチンの操作

//コルーチンのスレッドを閉じる
lua_close(L);


とした場合はコルーチンを実行する為に確保されたメモリは解放されますよね?

283 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 03:54:02 ]
そいや、Ioって言語はどうよ?
シンプル、軽量というのが売りらしいが。

284 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 09:02:18 ]
>>282
lua_newthreadで作成したコルーチンはlua_closeしちゃ駄目だよ。
開放はGCにまかせる。>>121あたりから同じ様な質問出てるから見てみ。


285 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 09:33:44 ]
>>284
指摘ありがとうございます
つまりスタックに積まれたコルーチンのスレッドを
lua_popで削除すればいいのですか
でもそれだとGCまかせでスグにコルーチン破棄はされないので

>>282のを
//コルーチンを実行するのスレッド(ステート)を作る
lua_State *L = luaL_newstate();
lua_State *T = lua_newthread(L);

//C側からコルーチンの操作

//ステートを閉じる
lua_close(L);

とすれば閉じるのはコルーチンのステートではないものの
lua_newthread は元のステートのオブジェクトを共有するみたいなので
コルーチンで確保されたメモリも同時に解放されますよね?

286 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:07:08 ]
>コルーチンで確保されたメモリも同時に解放されますよね?

まぁ、そらそうだが。
任意開放ならlua_gcじゃ駄目な理由でもあるの?

287 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:29:55 ]
駄目な理由はないのだけど
GCという目に見えない物に頼るより
自分で明確的に管理したくて

288 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:37:32 ]
つまりC#くそくらえってことですね

289 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 10:43:50 ]
(#^ω^)



290 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:14:07 ]
(C#^ω^)

291 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:22:19 ]
(Ruby#^ω^)

292 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:27:18 ]
>>287
Luaでは文字列もテーブルも関数もuserdataもGCで管理されてる訳だが、そういうのも自分で管理したいの?

293 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:31:28 ]
>>292
そこまではこだわってないです
それらはスクリプトに自分で定義しないと生成されないから
ある程度は管理出来るので

294 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:54:51 ]
>>285
元のステートごと閉じてたら、そのコストがでかすぎて全然うれしくないと思われ。
GCいやな人は lua 使うな、が精神的には正しい。squirrel にしときなされ。

295 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:06:48 ]
>>283
遅い
検索しづらい

296 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:07:49 ]
>>283
言語としては面白いよ
組み込みも簡単に出来るし
でもWinの開発環境を整えるの面倒

297 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:26:45 ]
ネットでの検索しやすいのさは大切だよね
iPhone 3G S もジョブスが発表後に iPhone 3GS に改名させたそうだ


298 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:28:16 ]
> ネットでの検索しやすいのさは大切だよね
「ネットでの検索のしやすさ」の間違いです…


自分でワロタ


299 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:37:33 ]
>>294
>元のステートごと閉じてたら、そのコストがでかすぎて
具体的にkwsk



300 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 13:09:55 ]
>>299
や、普通にグローバルな関数や変数も全部毎回順次解放&登録しなおすハメになるじゃん
そういったコストを下げるために共有させる仕組みなのに本末転倒だろう

それぞれのスレッドが完全独立で頻繁に起動するものでもないのなら止めはしない。

301 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 13:17:45 ]
>>285を見る限りコルーチンを実行し終わった時に
不要になったのを解放するのだから問題ないでしょ

302 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 14:09:07 ]
実際にはluaL_openlibsが必要だからコストが大きいよ
擬似コードにはいちいち書かないだろうけど
擬似コードを書くとどうしても、目に見えない物に頼りがちだよね

303 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:00:28 ]
ちょっと前にLuaで乱数を作っていたものだけど
今度は重複しない乱数を表示させたいと思っている。
でも何度やってもできない。。。
ヒントだけでも教えてください

304 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:05:01 ]
そもそも重複しないものは乱数とは言わない。もはや lua とは関係ない話なので手頃なアルゴリズム系の質問スレに移るのをオススメする
ヒント:シャッフル

305 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:19:02 ]
>>304
レスありがとう

ということは、最初に規定量の数値を指定しておいてそれをシャッフルすればいいってことか!
ありがとう。

306 名前:デフォルトの名無しさん [2009/10/18(日) 16:59:56 ]
個人情報が流出しても、ニュー速民は困る人いないよね?
tsushima.2ch.net/test/read.cgi/news/1255851428/

307 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:54:16 ]
(C#^ω^)

308 名前:デフォルトの名無しさん [2009/10/23(金) 14:27:21 ]
以下のようなプログラムで
クリティカルセクションの所有権を放棄し
それぞれのスレッド、スクリプトの実行を
安全に終了させるにはどうしたらいいでしょうか?

-- test.lua
while true do
foo()
end
-- test2.lua
while true do
foo()
end
-- main.cpp
void thread1(){
・・・
if(luaL_dofile(L,"test.lua")){
・・・
}
void thread2(){
・・・
if(luaL_dofile(L,"test2.lua")){
・・・
}
int foo(luaState* L){
EnterCriticalSection(&CriticalSection);
// 少し重めの処理
LeaveCriticalSection(&CriticalSection);
}


309 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 00:21:40 ]
1つ1つのLuaステートをLua_yield使って個別に動かすのはダメなの?



310 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 00:42:33 ]
あれ もしかしてAngelScriptって結構良いんじゃね?
名前が可愛いからちょっと舐めてたわ

311 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 00:51:08 ]
>>310
できたら、どの辺りが気に入ったか詳しく

312 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 06:30:35 ]
ついでに、このスレに常駐しているAngelScript信者の方にお聞きしたいのだが、
LuaやSquirrelと比べて優れている点は何がありまんすか?

313 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 06:39:49 ]
//
/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


314 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 07:09:44 ]
AngelScriptの@がよくわからん。
オブジェクトの参照なのか?

 Hoge@ hoge;

みたいなの。
C++みたいに、インスタンス入れる変数と参照がわかれているのか?(C++詳しくないからなんtねいったらいいかわからん)
LLなのに面倒な言語だな…
全部、デフォで参照でいいと思うんだが

315 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:38:48 ]
>>314
スクリプト言語の癖に静的型付言語だからなぁ。
それって本当に意味あるのか? って思ってしまう。

Booとかも触ってみてその動作速度は認めるけど、スクリプトの記述が面倒に感じる。

316 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:28:09 ]
ActionScript3.0 もいちおうスクリプト言語だけど、静的型付言語。
まぁ、インタプリタじゃないけどね。

317 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:43:43 ]
>>312
・文法がC++まんまなので書きやすい
・C++との連携が簡単
・クラスとかほぼそのまま使える
・const〜やenumなど、定数定義が可能
・#includeも可能
こんなところか?

>>314
その例だと、「Hogeクラスの参照型」って扱いになる。
C++のHoge &という記述に近い。

318 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:41:08 ]
スクリプトを自分で改造して使いたいんですが、ライセンスが緩くて
ソースが読みやすく短い組み込みライブラリのお勧めを教えてもらえませんか?
今のところLuaが最有力候補だと思ってます。

319 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:10:08 ]
Squirrelがソース短いんじゃなかったっけ。読みやすさは知らんが。



320 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 05:11:42 ]
>>319
実質としてはそんなに悪いコードではないが、しかし決して良いコードではない。
そして、SqPlusは絶対に読むな。頭が痛くなること請け合い。

それはそうと、Xtalのコードは大変いいと思うぞ。
言語自体の仕様は首を傾げたくなるところがあるが。

321 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:12:58 ]
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef