問題タブ [lua-lanes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - Lua Lanesとマルチコアサポート:それは可能ですか?
Lua Lanesは、マルチスレッドによるマルチコアサポートを可能にすると述べています。これは間違っていませんか?複数のコアを利用するために複数のプロセスを使用する必要はありませんか?Lua Lanesはこれを行いますか?
おそらく私は彼らが言っていることを誤解しています。これが彼らのサイトからの一節です:
Lua Lanesは、複数のLua状態を並行して実行する可能性を提供するLua拡張ライブラリです。これは、マルチコアCPUのパフォーマンスを最適化するため、およびLuaプログラムを最初から自然に並列化する方法を研究するために使用することを目的としています。
ありがとう
lua - luajit2 の lua-lanes
luajit 2内でレーンライブラリを使用する方法はありますか?
私の知る限り、 lua_dump() c-api 関数がサポートされていないという luajitの制限があります。特定の関数のコード チャンクを取得する他の方法はありますか?
multithreading - LuaLanes 関数間でグローバル変数を渡すことができません (単一レーン内)
良い一日をお過ごしください。
ここ数日、Lua で IRC チャットボットをプログラミングしてきましたが、ついに複数サーバー サポートの実装を開始したいと考えています。
これまでのところ、各サーバーを管理するための irc "オブジェクト" を作成しましたが、これまでのところ、スレッド化に問題があります。
ご存じのとおり、Lua にはスレッド サポートが組み込まれていません。ライブラリに関しては、LuaLanes と LuaThreads が、私が使いたかったものに最も近いように思えました。私が LuaLanes を選んだ理由は、LuaThreads には変更された lua コアが必要だからです。さらに、LuaLanes の "lindas" 機能が私の目を引きました (後でプラグインで使用するため)。
とにかく、私が抱えている問題は、関数を使用してレーンを生成しmiddleman
(たとえば)、別の関数を呼び出す場合ですsqr
(たとえば)。のような関数を生成するとlanes.gen({globals = _G}, middleman)
、仲介者は現在のグローバルスコープ内のすべてにアクセスできます。これはまさに私が望んでいることです。問題は、 をmiddleman
呼び出してグローバル スコープの何かsqr
を使用すると、突然空になったsqr
かのようにエラーがスローされることです。_G
上記の例を使用して、一緒に投げることができたコードの例を次に示します。
次のエラーが表示されます。
(ちなみにLinuxを使っています)
ただし、11 行目を からgen = lanes.gen({globals = _G}, middleman)
に変更するとgen = lanes.gen({globals = _G}, sqr)
、正常に動作します。
チェックしたところ、「*」(または「libs_str」パラメーターの他のオプション)を渡してデフォルトのライブラリをロードすると、同じことが起こります。
Lua 用の Java のスレッド ライブラリのようなものがあればいいのにと思います。それが私が最初にスレッドの使い方を学んだ方法です。(私が思う最も理想的な環境ではありません)
ありがとう、助けてくれてありがとう。特に、これは私の IRC ボット開発を完全に停止させてしまったので! :(
multithreading - 応答に時間がかかりすぎるlua関数を検出して迅速に処理するにはどうすればよいですか?
私はCoronaSDKを使用して、luasocketを必要とするシンプルなアプリを作成しています。Corona SDKは、非同期httpreqを実行するためのluasocketをサポートします。
しかし、luasocketのUDPを使用したいと思います。luasocketからのUDPreceive()メソッドは、メッセージを受信するまでブロックされています。
CoronaSDKはLuaLanesをサポートしていません。したがって、別のスレッドでudpメッセージを聞くことはまったく不可能です。
だから私は、関数(この場合はudp.receive())が応答するのに時間がかかりすぎるかどうかを検出してキャンセルするためのメソッド/トリック/回避策がluaにあるかどうかを考えていますか?
前もって感謝します
c - Lua Lanesをゲームサーバーで動作させるにはどうすればよいですか?
私はこれで一日中頭を悩ませてきました、そして私はそれを理解することができません。私のサーバーは、すべてのスクリプトをグローバル変数としてロードする単一の状態を使用します(luaL_dofile
スクリプトを実行するたびに呼び出す必要がなく、いつでも呼び出すことができます)。レーンを使おうとすると問題が発生します。require "lanes"
Linux(Ubuntu 11.10 x86)の適切なディレクトリにlanes.luaがあるので、正常に動作します(私は思いますか?適切にpackage.loadedにテーブルを返します...)。しかし、私がやろうとすると、それは私に教えてくれますlanes.gen("", functionName)
...。attempt to index global 'lanes': a nil value
この時点で私は試してみることにしましたpackage.loaded["lanes"].gen("", functionName)
、そしてそれは私に教えてくれます...attempt to index field 'gen': a nil value
あなたがより多くの情報を必要とするならば、私に知らせてください。少なくとも助けてくれてありがとう。
c - グローバルまたは環境をメイン状態から Lua レーンに取得するにはどうすればよいですか?
Lua Lanes を適切に実行するためのゲーム サーバーでのテストとして、新しいスレッドでメイン状態からグローバル関数を使用しようとしています。残念ながら、この特定のコードはAssert Failure in tools.c line 1216
. メインスレッド、そして最終的にはゲームサーバーをロックすることなく忙しい仕事をすることができるように、これを設定しようとしています. おそらくこれを行うより良い方法はありますか?luaL_newthread(state)
または、サーバーでスクリプトを実行できますか?これは現在私の開発を停止しているため、正しい方向にアドバイスしてください。前もって感謝します。
lua - LuaLanes と LuaSockets
私は、ソケットを使用して外の世界と通信する小さな Lua アプリ (Lua for Windows の下で、それが重要な場合) に取り組んでいます。(ルアソケット)
そして、いくつかのリクエストを並行して行おうとしています。だから私はLuaLanesが行くべき道だと思った. (もちろん、より良い解決策があれば代替案を受け入れますが、このためにコルーチンを処理したくないでしょう。)
このようなもの:
関数laneTest
は次のように定義されます。
私の問題は、laneTest
関数内でレーンとして実行すると、次のような素敵なエラー メッセージが表示されることです。
ローカルの「クライアント」(ユーザーデータ値) のインデックス作成を試みます
(ラインよりclient:getpeername()
)
だから..ここで何が起こっているのかわかりませんか? レーンはソケットと互換性がありませんか、それとも何か非常に間違っていますか?
Lua for Windows に同梱されているレーンのバージョンは古いもの ( luaforwindows ) であり、ソケットでは動作しない可能性があると思いますが、最新バージョンは可能でしょうか? (レーン 2.0.4 vs 最近の 3.xx)
持っている Lanes のバージョンを更新する方法がよくわかりません。それが私が向かっている可能性のある場所であるか、または私が間違ったことをしたことがより明らかな何かがある場合は、アドバイスをいただければ幸いです。
編集:先に進み、luarocksを介してレーンをインストールしましたが、ロックとしてインストールされたレーン3.1.6-1を使用して同じ問題を抱えています。
編集2 :これを試しました(それでも失敗しました):
- これは主張に失敗します:
attempt to call global 'require' (a nil value)
- 関数内の行を削除して
require ('socket')
再試行しても、次のように言って失敗します。attempt to index local 'client' (a userdata value)
明らかなことを見逃してしまったことを前もってお詫びしますが... どうすればソケットをレーンで動作させることができますか?
編集3:
さて、私は将来の参考のためにこれを編集しています:)
私が知る限り、luasocket にパッチを当てずにレーンをソケットで使用する方法はありません。詳細については、こちらのディスカッションを参照してください。要するに(Decoの回答で説明されているように):レーンはユーザーデータでは機能しません。luasocket は、ソケット/ソケット情報にアクセスする他の方法を提供しません。
私は luasocket にパッチを当てたいとは思っていません。
皆さんありがとう!
c - Lua Lanes がアプリケーションをクラッシュさせる
最新の lua レーンを使用する lua スクリプトがあります。次のスクリプトを作成
しました
私の問題は:
アプリケーションから実行すると(Windows上)、実行中にクラッシュが発生します。クラッシュ中のコールスタックは次のとおりです。
誰でも私を助けてくれますか?lanes.configure() のインクルードとロードがこの問題を引き起こしているように見えるので、何か間違ったことをしている可能性があります。さらに情報が必要な場合はお知らせください。
どうもありがとう。
よろしく、
マユール
lua - Lua Lanes linda
レーンを設定して正常に実行していますが、リンダの値の受け渡しを理解するのに問題があります。レーンサイトで次のコードを見つけました。
set / getを実行するとアプリケーションがクラッシュするので、set / getのテーブルをどのように宣言するのか疑問に思っていますか?
文字列として使用すると、set / getの種類は機能しますが、レーンを数回実行するとクラッシュします。
誰かがここに何かポインタを持っていますか?
c - Lua-lanes から C 関数を呼び出せません
Lua レーンを使用して Lua モジュールから C 関数を呼び出そうとすると、制御が「C」関数に転送されません。Lua-lanes が外部の C dll でスレッド化された方法で動作しないという問題はありますか?
以下はコードスニペットです
Lua スニペット:
VS-2012 で dll にコンパイルされた C スニペット: