【IT】無職だがプログラミング勉強してる。非同期処理が難しいからコツを教えてくれ [812534709]
■ このスレッドは過去ログ倉庫に格納されています
何の非同期か知らんが、イベント駆動で逆に楽な位じゃないのか リアルタイムOSじゃなければ、同期処理してないだろ 非同期プログラミング
プログラムが外界とやり取りをするとき、例えばインターネット越しに他のマシンと通信をするとき、プログラムの処理を前もって予測できない順序で実行しなければならないことがあります。プログラムの途中でファイルをダウンロードするとしましょう。このときはダウンロード操作を開始し、完了するのを待ちながら他の処理を行い、ファイルが利用可能になったらそれを使う処理を行いたいはずです。この種のシナリオをカバーするのが非同期 (asynchronous) プログラミングです。非同期プログラミングは並列 (concurrent) プログラミングとも呼ばれます (概念上は複数の処理が一度に起こるからです)。
こういったシナリオに対応するために、Julia はタスクを提供します (タスクは対称的コルーチン (symmetric coroutines)・軽量スレッド (light thread)・協調的マルチタスク (cooperative multitasking)・ワンショット継続 (one-shot continuations) といった名前で呼ばれることもあります)。計算処理の一部分 (実際のコードでは関数) を Task として切り出すと、その部分の実行を途中で中断して他のタスクに切り替えられるようになります。中断した Task は後から再開でき、それをさらに中断することもできます。
一見するとタスクは通常の関数呼び出しに似ていますが、重要な違いが二つあります。まず、タスクの切り替えは空間を一切使用しないので、タスクをいくら切り替えてもコールスタックは消費されません。次に、呼び出し側に制御を戻すには実行を終えるしかない通常の関数呼び出しとは対称的に、タスクの切り替えは任意のタイミングで行えます。
基本的なタスク演算
天は自ら助くる者をタスクなんちってw C#ならlinqの一種だと思っとけばいいんじゃねえの
うろ覚えだけど 用途はなんなんだい
厳密なエラー処理とか必要なきゃ簡単やろ
必要ならいっそあきらめろ👍 非同期なんだから飛ばして放置でいいんだよ
返って来たら別途処理するぐらいの感覚な
飛ばして返答待つつもりなら同期してやれ >>1
例えば、お前がここに質問書いて、返ってくるのを待ってるだろ。これが非同期 どの言語だよ
async/awaitのある言語でやれ
無い言語で無理にやろうとするな >>23
C#って書いてるじゃんasync awaitはあるよ >>25
ほんとだわ。俺はアホか
非同期処理の本質は、処理の「予約」なんだ。
async で書かれたコードは呼ばれた時に直ちに実行するのではなく、
後で適当な時に実行するように予約する。
その適当な時というのが具体的にいつになるのかはわからないが、
それを await して、await が完了した時には既に終わっていることが保証される
これはつまり複数の非同期処理が並行して動く場合には、それらがどんな順序で動くのか
事前に決まらない事があるという事なので、グローバルな状態を操作しようとすると厄介な事になる
だからコツとしては、なるべく副作用の無いように、可能な限り少なくなるように記述するのがポイントだ >>27
そういうのをやめろと言ってるんだよw
誰がメンテできるんだよこんなもん System 呼び出しで epoll つかえばいいんじゃね? cat ./list.txt | while read line
do
echo $line &
done
はい 俺レベルになるとasyncとawaitの使い方が分からな
あしんくあうぇいと?えーしんくあうぇいと? 最近のJaavascriptはasync, awaitはもちろん Promise then も理解してないと全く読めなくなるぞ IT土方だのと散々ぱらバカにしといて出来ないの?
諦めて港湾で働いたら? > コツを教えてくれ
動かない時はとにかく sleep を入れれば動くよ >>26
これこのままだといろいろ誤解がありそうなのでレスするけど
awaitで受けてるならそこで値は受け取るはずなのでわざわざグローバルなものにアクセスするような設計にする必要がない
アクセスがあったとしてもatomicという手法もあるし
順番が問題なのであればシーケンシャルに実行するようにすればいいだけ
async/awaitあんまり使うなという結論は今の環境では厳しい ■ このスレッドは過去ログ倉庫に格納されています