Skip to Content
プログラミングC# 第8版
book

プログラミングC# 第8版

by Ian Griffiths, 木下 哲也, 鈴木 幸敏
June 2021
Intermediate to advanced
800 pages
13h 5m
Japanese
O'Reilly Japan, Inc.
Content preview from プログラミングC# 第8版

17章非同期言語機能

 C#は、非同期メソッドの使用と実装を言語レベルでサポートしています。多くの場合、非同期APIは特定のサービスを利用するための最も効率的な方法です。例えば、ディスクコントローラやネットワークアダプタなどの周辺機器のほとんどは処理の大部分を自律的に実行できるため、ほとんどのI/O処理はOSカーネルの内部では非同期で処理されます。CPUが必要になるのは、操作の開始時と終了時だけです。

 OSが提供しているサービスの多くが本質的には非同期であるにもかかわらず、たいていの場合には開発者は同期API(つまり、処理が完了するまでは戻らないAPI)経由でサービスを利用します。そうするとI/Oの完了までスレッドがブロックされるため、リソースの無駄遣いになってしまいます。スレッドにはオーバーヘッドがあり、最高のパフォーマンスを得るには通常はOSスレッドが比較的少数であるのが最適です。アプリケーションでハードウェアスレッドと同数のOSスレッドを使うのが理想的ですが、これが最適なのは実行すべき未処理の作業がない場合にだけスレッドをブロックできる場合だけです(「16章 マルチスレッド」でOSスレッドとハードウェアスレッドの違いを説明しています)。同期APIを呼び出してブロックされているスレッドの数が多くなるほど、作業に対処するために必要なスレッドも多くなるので、効率が低下します。パフォーマンスが重視されるコードでは非同期APIが役に立ちます。非同期APIであれば、I/Oが完了するまでスレッドを強制的に待機させてリソースを浪費するのではなく、スレッドで処理を開始し、その間に別の生産的な作業を実行できます。

 しかし、非同期APIには同期APIと比較すると使用方法がかなり複雑だという問題点があります。特に顕著なのは、関連する複数の処理を調整し、エラー処理を行わなければならない場合です。そのため、主流のプログラミング言語が組み込みのサポートを用意する以前には多くの開発者があまり効率のよくない同期APIを選択することが多かったのです。2012年にC#とVBでこのような機能を研究段階から脱却させ、それ以来多くの他の人気言語が類似の機能を追加しました(最も顕著なのがJavaScriptで、2016年に非常に見た目の似た構文を導入しました)。C#の非同期機能では、効率的な非同期APIを使い、簡単な同期APIを使った場合とほとんど同じくらい簡潔なコードを書くことができます。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

動かして学ぶ量子コンピュータプログラミング ―シミュレータとサンプルコードで理解する基本アルゴリズム

動かして学ぶ量子コンピュータプログラミング ―シミュレータとサンプルコードで理解する基本アルゴリズム

Eric R. Johnston, Nic Harrigan, Mercedes Gimeno-Segovia, 北野 章, 丸山 耕司
ユーザーストーリーマッピング

ユーザーストーリーマッピング

Jeff Patton, 川口 恭伸, 長尾 高弘
Unityによるモバイルゲーム開発 ―作りながら学ぶ2D/3Dゲームプログラミング入門

Unityによるモバイルゲーム開発 ―作りながら学ぶ2D/3Dゲームプログラミング入門

Jon Manning, Paris Buttfield-Addison, 鈴木 久貴, あんどうやすし, 江川 崇, 安藤 幸央, 高橋 憲一

Publisher Resources

ISBN: 9784873119366Other