X



【IT】無職だがプログラミング勉強してる。非同期処理が難しいからコツを教えてくれ [812534709]
■ このスレッドは過去ログ倉庫に格納されています
0003番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ e3d1-IcTB)
垢版 |
2022/10/07(金) 21:51:53.23ID:Rn8pylCL0
何の非同期か知らんが、イベント駆動で逆に楽な位じゃないのか
0007番組の途中ですがアフィサイトへの転載は禁止です (アウアウウー Sa27-wf/a)
垢版 |
2022/10/07(金) 21:58:12.12ID:R/kKM1T9a
ググる方が早い
ググってもわからないなら諦メロン
0009番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ f3d2-pIDl)
垢版 |
2022/10/07(金) 21:58:42.69ID:JpjDGuzg0
無理に使う必要あるそれ?
0010番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW c322-Qoul)
垢版 |
2022/10/07(金) 21:59:21.58ID:pyD86u3N0
どうせAIに淘汰されるよ
0011番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ f3d2-pIDl)
垢版 |
2022/10/07(金) 21:59:43.79ID:JpjDGuzg0
非同期プログラミング
プログラムが外界とやり取りをするとき、例えばインターネット越しに他のマシンと通信をするとき、プログラムの処理を前もって予測できない順序で実行しなければならないことがあります。プログラムの途中でファイルをダウンロードするとしましょう。このときはダウンロード操作を開始し、完了するのを待ちながら他の処理を行い、ファイルが利用可能になったらそれを使う処理を行いたいはずです。この種のシナリオをカバーするのが非同期 (asynchronous) プログラミングです。非同期プログラミングは並列 (concurrent) プログラミングとも呼ばれます (概念上は複数の処理が一度に起こるからです)。

こういったシナリオに対応するために、Julia はタスクを提供します (タスクは対称的コルーチン (symmetric coroutines)・軽量スレッド (light thread)・協調的マルチタスク (cooperative multitasking)・ワンショット継続 (one-shot continuations) といった名前で呼ばれることもあります)。計算処理の一部分 (実際のコードでは関数) を Task として切り出すと、その部分の実行を途中で中断して他のタスクに切り替えられるようになります。中断した Task は後から再開でき、それをさらに中断することもできます。

一見するとタスクは通常の関数呼び出しに似ていますが、重要な違いが二つあります。まず、タスクの切り替えは空間を一切使用しないので、タスクをいくら切り替えてもコールスタックは消費されません。次に、呼び出し側に制御を戻すには実行を終えるしかない通常の関数呼び出しとは対称的に、タスクの切り替えは任意のタイミングで行えます。

基本的なタスク演算



天は自ら助くる者をタスクなんちってw
0014番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW cf8f-ruke)
垢版 |
2022/10/07(金) 22:34:57.52ID:q0YKFbuP0
非同期なんだから飛ばして放置でいいんだよ
返って来たら別途処理するぐらいの感覚な

飛ばして返答待つつもりなら同期してやれ
0015番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 6f3a-i3zU)
垢版 |
2022/10/07(金) 22:45:18.46ID:tIemWzaP0
現実世界は全て非同期だからな。そう考えたら楽勝
0016番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 2378-Kv8u)
垢版 |
2022/10/07(金) 22:46:04.27ID:OM1eGYC20
>>11
嘘だらけの説明で草
0018番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 6f3a-i3zU)
垢版 |
2022/10/07(金) 22:48:51.31ID:tIemWzaP0
>>1
例えば、お前がここに質問書いて、返ってくるのを待ってるだろ。これが非同期
0019番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 2378-Kv8u)
垢版 |
2022/10/07(金) 22:49:49.99ID:OM1eGYC20
>>17
実質同期やんけ
0020番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ d30d-3Z/k)
垢版 |
2022/10/07(金) 22:52:41.81ID:T62j0PKQ0
forkしてexecしてやればいいんだろ
0022番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 73c6-WCvD)
垢版 |
2022/10/07(金) 22:56:07.03ID:QAGAwDro0
あれだろ?SQS使えばいいんだろ?
0026番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ ff5e-mY4U)
垢版 |
2022/10/07(金) 23:09:15.14ID:86hKp+pP0
>>25
ほんとだわ。俺はアホか

非同期処理の本質は、処理の「予約」なんだ。
async で書かれたコードは呼ばれた時に直ちに実行するのではなく、
後で適当な時に実行するように予約する。
その適当な時というのが具体的にいつになるのかはわからないが、
それを await して、await が完了した時には既に終わっていることが保証される

これはつまり複数の非同期処理が並行して動く場合には、それらがどんな順序で動くのか
事前に決まらない事があるという事なので、グローバルな状態を操作しようとすると厄介な事になる
だからコツとしては、なるべく副作用の無いように、可能な限り少なくなるように記述するのがポイントだ
0030番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ ff3e-uLnO)
垢版 |
2022/10/07(金) 23:37:18.73ID:5ap3Xfdf0
System 呼び出しで epoll つかえばいいんじゃね?
0031番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW cf8f-CjM1)
垢版 |
2022/10/07(金) 23:39:38.63ID:MMnOXQdl0
>>26
頭良さそう
0032番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 83af-lv/N)
垢版 |
2022/10/07(金) 23:41:21.10ID:CFhyG5uu0
タイミングを合わせるには一息置くんだよ(適当)
0035番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW de67-5vOL)
垢版 |
2022/10/08(土) 00:55:29.73ID:vCza5FHi0
俺レベルになるとasyncとawaitの使い方が分からな
0036番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 5f44-VZm7)
垢版 |
2022/10/08(土) 00:57:51.01ID:PDUEKHnT0
c#しらんわ
0037番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ ff78-ltvk)
垢版 |
2022/10/08(土) 03:21:26.19ID:IW6e8NJu0?2BP(2000)

あしんくあうぇいと?えーしんくあうぇいと?
0039番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ 1b62-sYK7)
垢版 |
2022/10/08(土) 09:20:13.98ID:LKuDzLHM0
最近のJaavascriptはasync, awaitはもちろん Promise then も理解してないと全く読めなくなるぞ
0040番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW cbaf-vVSw)
垢版 |
2022/10/08(土) 10:56:44.80ID:+4c4XvCT0
IT土方だのと散々ぱらバカにしといて出来ないの?
諦めて港湾で働いたら?
0041番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイ 8a3e-MsHp)
垢版 |
2022/10/08(土) 11:02:01.42ID:iwEOF29d0
> コツを教えてくれ

動かない時はとにかく sleep を入れれば動くよ
0042番組の途中ですがアフィサイトへの転載は禁止です (テテンテンテン MM86-wn7l)
垢版 |
2022/10/08(土) 11:21:28.99ID:904hlgONM
>>26
これこのままだといろいろ誤解がありそうなのでレスするけど
awaitで受けてるならそこで値は受け取るはずなのでわざわざグローバルなものにアクセスするような設計にする必要がない
アクセスがあったとしてもatomicという手法もあるし
順番が問題なのであればシーケンシャルに実行するようにすればいいだけ
async/awaitあんまり使うなという結論は今の環境では厳しい
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況