問題タブ [ecl]
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 - *standard-input* を上書きしないことでマルチスレッドを防止
の使用方法によって動作が異なる Common Lisp プログラムがあります*standard-input*
。詳細は次のとおりです。
このprocess
関数は複数のスレッドを開始します。各スレッドは標準入力の一部を読み取り、それをファイルに書き込み (すべてロック内)、結果のファイルを並行して処理します (ロック外)。実際、結果のファイルを並行して処理するのは、それ以外の場合にのみ、input-stream?
順次false
処理します。
(mkfifo を使用して) FIFO を作成し、ファイルをそこにコピーして、代わりにそれを使用してプログラムを実行すると、再び並列処理が観察されます。
上記のプログラムは、ECL を使用してコマンド ライン ユーティリティとしてビルドされ、Linux で実行されます。次のいずれかの方法で実行します。
- 猫「ビッグファイル」 | マイプログラム
- 私のプログラム「ビッグファイル」
並列処理はケース 2 でのみ発生します。
問題は、なぜ違いがあるのかということです。
アップデート:
- 私の質問に間違いがありました。これでOKです。
process
関数を追加し、プログラムの実行方法を説明しました
common-lisp - Common Lisp ECL で段階的なデバッグを実行するにはどうすればよいですか?
ECLを使ってCommon Lispを勉強しています。デバッグ方法はhttps://malisper.me/debugging-lisp-part-1-recompilation/を参考にやってみましたが、ステップ実行がうまくいきませんでした。
"(break)" を挿入して "RETRY" を選択すると、ブレークで最初に処理が停止します。これは、上記のページに示されているように意図された動作です。
次にSキーを押した時、踏んだはずなのに以下のエラーメッセージが表示されました。
これはECLの実装上の問題かもしれませんが、ECLでは通常どのようなデバッグが行われているのか知りたいです。
よろしく、NOEU