22/12/08 12:29:27.06 Nq8u2KPWd.net
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。
次スレは>>980が立てること
【前スレ】
スレ立てるまでもない質問はここで 162匹目
スレリンク(tech板)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
343:デフォルトの名無しさん
23/01/05 14:50:56.99 vkZCL/K50.net
ウェイトフリー、ロックフリーのキューにいれてシリアル化? 、直列化? すれば
多重アクセスでもSQliteでいいか?
344:デフォルトの名無しさん
23/01/05 14:53:54.58 vkZCL/K50.net
Lock-freeとWait-freeアルゴリズム 出典: フリー百科事典『ウィキペディア(Wikipedia)』
Lock-freeとWait-freeアルゴリズムとは、共有データにロックをかけてアクセスを防ぐアルゴリズムとは違い、複数のスレッドが同時並行的に、ある対象データを壊すことなしに読み書きすることを可能にするアルゴリズムである。
Lock-free とはスレッドがロックしないことを意味しており、全てのステップにおいてシステムが必ず進行する。
Wait-free とは、他のスレッドの動作に関係なく、スレッドがいかなる操作も有限のステップで操作を完了させられることを指す。
Wait-free なアルゴリズムは Lock-free である。
銀行預金の例
例えば、銀行口座への預金プログラムを作るとする。それぞれのスレッドをATMとする。
ロック方式のやり方の場合、1つ目のATMが預金をするとき、ほかのATMが同時に預金残高を変更しないよう、ロックをかける。
さもないと、同時に処理してしまうと、最終的な預金残高に不整合が起きうる。
この処理を Lock-free にするには、すべての預入要求を管理するスレッドを作り、そこに、Wait-free のキューを作り、
ATMはそのキューに対して非同期にロックをかけることなく預入要求を入れ、預入要求を管理するスレッドはキューから順次取り出し、預金残高を更新する。
このやり方の方が、わざわざ Lock-free の預金アルゴリズムを作るよりも、プログラミングは楽である。
さらに、この手法は、キューがWait-freeであるので、Lock-free なだけでなく、Wait-freeでもある。
預金残高の書き換え処理をn並列で行いたいなら、n個Wait-freeキューを作り、口座番号をnで割った余りでどのキューに入れるか決めるという方法で対応できる。
345:デフォルトの名無しさん
23/01/06 00:44:53.18 Hz2m3Wai0.net
sndvol.exeやeartrumpetなどのアプリごとの音量調整アプリはどうやって実現させているのでしょうか
アプリごとに音量調整できるWindowsAPIがあるのですか?