タグ付けされた質問 「asynchronous」

非同期プログラミングは、通常、ソフトウェアのパフォーマンス、応答性、および/または構成可能性を向上させるために、待ち時間が長いか優先度の低い操作を延期するための戦略です。このような戦略は、通常、イベント駆動型プログラミングとコールバックを組み合わせて使用​​し、オプションでコルーチンやスレッドを介して同時実行性を利用します。

2
Entity Frameworkの非同期操作が完了するまでに10倍の時間がかかる
Entity Framework 6を​​使用してデータベースを処理しているMVCサイトがあり、すべてを非同期コントローラーとして実行し、データベースへの呼び出しを非同期対応として実行するように変更しています(例:ToListAsync())。 ToList()の代わりに) 私が抱えている問題は、クエリを非同期に変更するだけで信じられないほど遅くなることです。 次のコードは、データコンテキストから「アルバム」オブジェクトのコレクションを取得し、かなり単純なデータベース結合に変換されます。 // Get the albums var albums = await this.context.Albums .Where(x => x.Artist.ID == artist.ID) .ToListAsync(); 作成されたSQLは次のとおりです。 exec sp_executesql N'SELECT [Extent1].[ID] AS [ID], [Extent1].[URL] AS [URL], [Extent1].[ASIN] AS [ASIN], [Extent1].[Title] AS [Title], [Extent1].[ReleaseDate] AS [ReleaseDate], [Extent1].[AccurateDay] AS [AccurateDay], [Extent1].[AccurateMonth] AS [AccurateMonth], [Extent1].[Type] AS [Type], [Extent1].[Tracks] …

8
非同期のcomponentDidMount()の使用は良いですか?
componentDidMount()React Nativeで非同期関数として使用することは良い習慣ですか、それとも避けるべきですか? AsyncStorageコンポーネントのマウント時にいくつかの情報を取得する必要がありますが、それを可能にする唯一の方法は、componentDidMount()関数を非同期にすることです。 async componentDidMount() { let auth = await this.getAuth(); if (auth) this.checkAuth(auth); } これに問題はありますか?この問題の他の解決策はありますか?

7
非同期メソッドが完了するのを待つ方法は?
USB HIDクラスデバイスにデータを転送するWinFormsアプリケーションを書いています。私のアプリケーションは、こちらにある優れたGeneric HIDライブラリv6.0を使用しています。簡単に言えば、デバイスにデータを書き込む必要がある場合、次のコードが呼び出されます。 private async void RequestToSendOutputReport(List<byte[]> byteArrays) { foreach (byte[] b in byteArrays) { while (condition) { // we'll typically execute this code many times until the condition is no longer met Task t = SendOutputReportViaInterruptTransfer(); await t; } // read some data from device; we need to wait …

13
非同期プログラミングと並列プログラミングの違いを明確にする方法は?
多くのプラットフォームは、応答性を向上させる手段として非同期性と並列性を促進しています。私はその違いを大まかに理解していますが、自分自身や他の人の心の中で明確に表現するのは難しいと感じることがよくあります。 私は平凡なプログラマーであり、非同期とコールバックをかなり頻繁に使用しています。並列処理はエキゾチックです。 しかし、特に言語設計レベルでは、それらは簡単に融合しているように感じます。それらがどのように関連しているか(または関連していないか)の明確な説明と、それぞれが最もよく適用されるプログラムのクラスが気に入っています。


3
イベントループについて
私はそれについて考えています、そしてこれは私が思いついたものです: 次のようなコードがあるとします。 console.clear(); console.log("a"); setTimeout(function(){console.log("b");},1000); console.log("c"); setTimeout(function(){console.log("d");},0); リクエストが届き、JSエンジンは上記のコードの実行を段階的に開始します。最初の2つの呼び出しは同期呼び出しです。しかし、setTimeoutメソッドに関しては、非同期実行になります。しかし、JSはすぐにそれから戻って、実行を継続する、と呼ばれていますNon-BlockingかAsync。そしてそれは他にも取り組んでいます。 この実行の結果は次のとおりです。 acdb つまり、基本的には2番目setTimeoutが最初に終了し、そのコールバック関数は最初のものよりも早く実行され、それは理にかなっています。 ここではシングルスレッドアプリケーションについて説明します。JS Engineはこれを実行し続け、最初のリクエストが終了しない限り、2番目のリクエストには進みません。しかし良い点は、setTimeout解決するようなブロック操作を待たないため、新しい着信要求を受け入れるため、処理が速くなることです。 しかし、私の質問は次の項目に関して発生します。 #1:シングルスレッドアプリケーションについて話している場合setTimeouts、JSエンジンがより多くのリクエストを受け入れて実行する間に、どのメカニズムが処理しますか?シングルスレッドは他のリクエストに対してどのように機能し続けますか?何が上で動作しsetTimeout、他の要求がでてくると実行を取得しています。 #2:これらのsetTimeout関数がバックグラウンドで実行され、さらに多くのリクエストが入って実行されている場合、バックグラウンドで非同期実行を実行するものは何ですか?私たちが話しているこのことは何と呼ばれていEventLoopますか? #3:しかし、メソッド全体をに入れEventLoopて、全体が実行され、コールバックメソッドが呼び出されるようにしないでください。これは、コールバック関数について話すときに理解できることです。 function downloadFile(filePath, callback) { blah.downloadFile(filePath); callback(); } しかし、この場合、JSエンジンは非同期関数であるかどうかをどのようにして認識し、コールバックEventLoop? Perhaps something like theをC#のasync`キーワードに入れるか、JSエンジンが行うメソッドが非同期メソッドであることを示す何らかの属性を置くことができます。それに応じて処理する必要があります。 #4:しかし、記事は、物事がどのように機能しているのかについて私が推測していたこととはまったく逆のことを言っています。 イベントループは、コールバック関数のキューです。非同期関数が実行されると、コールバック関数がキューにプッシュされます。JavaScriptエンジンは、非同期関数が実行された後のコードが実行されるまで、イベントループの処理を開始しません。 #5:この画像は参考になるかもしれませんが、画像の最初の説明は、質問番号4で述べたものとまったく同じことを言っています。 だから私の質問は、上記の項目についていくつかの説明を得ることですか?

10
非同期vsマルチスレッド-違いはありますか?
非同期呼び出しは常に新しいスレッドを作成しますか?2つの違いは何ですか? 非同期呼び出しは常に新しいスレッドを作成または使用しますか? ウィキペディアは言う: コンピュータプログラミングでは、非同期イベントはメインプログラムフローとは無関係に発生するイベントです。非同期アクションは、非ブロックスキームで実行されるアクションであり、メインプログラムフローが処理を続行できるようにします。 シングルスレッドで非同期呼び出しを実行できることを知っていますか?これはどのようにして可能ですか?

2
非同期アクションデリゲートメソッドはどのように実装しますか?
少し背景情報。 私はWeb APIスタックを学び、SuccessやErrorCodesなどのパラメーターを持つ「Result」オブジェクトの形式ですべてのデータをカプセル化しようとしています。 ただし、メソッドが異なれば結果やエラーコードも異なりますが、結果オブジェクトは一般的に同じ方法でインスタンス化されます。 時間を節約し、C#の非同期/待機機能の詳細を学ぶために、Web APIアクションのすべてのメソッド本体を非同期アクションデリゲートでラップしようとしていますが、ちょっとした問題に巻き込まれています... 次のクラスがあるとします。 public class Result { public bool Success { get; set; } public List<int> ErrorCodes{ get; set; } } public async Task<Result> GetResultAsync() { return await DoSomethingAsync<Result>(result => { // Do something here result.Success = true; if (SomethingIsTrue) { result.ErrorCodes.Add(404); result.Success = false; } …

9
jQueryの「each()」関数は同期ですか?
検証のためにこのシナリオを検討してください: function validateForm (validCallback) { $('#first-name').add($('#last-name')).add($('#address')).each(function () { // validating fields and adding 'invalid' class to invalid fields. }); // doing validation this way for almost 50 fields (loop over 50 fields) if ($('#holder .invalid').length == 0) { // submitting data here, only when all fields are validated. } } …

5
async await returnタスク
誰かがこれが同期メソッドに何を意味するのか説明できますか?メソッドをに変更しようとするとasync、VSはそれについて文句を言います。 これは機能します: public Task MethodName() { return Task.FromResult<object>(null); } これは機能しません: public async Task MethodName() { return Task.FromResult<object>(null); } だから基本的に私はこれが正確に何を意味するのか知りたいです: Task.FromResult<object>(null);

3
.Net 4.5の非同期HttpClientは、集中的な負荷のあるアプリケーションにとって悪い選択ですか?
私は最近、非同期の方法で生成できるHTTP呼び出しのスループットをテストするための単純なアプリケーションと、従来のマルチスレッドアプローチを作成しました。 アプリケーションは、事前定義された数のHTTP呼び出しを実行でき、最後にそれらを実行するために必要な合計時間を表示します。テスト中、すべてのHTTP呼び出しはローカルIISサーバーに対して行われ、小さなテキストファイル(サイズは12バイト)を取得しました。 非同期実装のコードの最も重要な部分を以下に示します。 public async void TestAsync() { this.TestInit(); HttpClient httpClient = new HttpClient(); for (int i = 0; i < NUMBER_OF_REQUESTS; i++) { ProcessUrlAsync(httpClient); } } private async void ProcessUrlAsync(HttpClient httpClient) { HttpResponseMessage httpResponse = null; try { Task<HttpResponseMessage> getTask = httpClient.GetAsync(URL); httpResponse = await getTask; Interlocked.Increment(ref _successfulCalls); } …

4
voidを返すこととタスクを返すことの違いは何ですか?
さまざまなC#非同期CTPサンプルを見るvoidと、を返す非同期関数と、非ジェネリックを返す関数がありTaskます。Task<MyType>非同期操作が完了したときに呼び出し元にデータを返すのにa を返すと便利な理由がわかりますが、これまでに見た関数の戻り値の型にTaskは、データを返さないものがあります。なぜ戻りませんvoidか?

5
Chrome拡張機能でjQueryを使用する方法
私はクローム拡張を書いています。そしてjQuery、拡張機能で使用したいと思います。バックグラウンドページは使用せず、バックグラウンドスクリプトのみを使用しています。 これが私のファイルです: manifest.json { "manifest_version": 2, "name": "Extension name", "description": "This extension does something,", "version": "0.1", "permissions": [ "activeTab" ], "browser_action": { "default_icon": "images/icon_128.png" }, "background": { "scripts": ["background.js"], "persistent": false }, "icons": { "16": "images/icon_16.png", "48": "images/icon_48.png", "128": "images/icon_128.png" } } 私のbackground.jsファイルは、work.js // Respond to the click on extension …

6
なぜPromise.catchハンドラー内にスローできないのですか?
なぜErrorcatchコールバックの内部をスローして、他のスコープにあるかのようにプロセスにエラーを処理させないのはなぜですか? console.log(err)何もしなければ、何も出力されず、何が起こったのかわかりません。プロセスは終了しました... 例: function do1() { return new Promise(function(resolve, reject) { throw new Error('do1'); setTimeout(resolve, 1000) }); } function do2() { return new Promise(function(resolve, reject) { setTimeout(function() { reject(new Error('do2')); }, 1000) }); } do1().then(do2).catch(function(err) { //console.log(err.stack); // This is the only way to see the stack throw err; // …

7
Syncではなくreactjs AsyncでsetStateを使用するのはなぜですか?
私はちょうどthis.setState()任意のコンポーネントの反応関数が非同期であるか、それが呼び出された関数の完了後に呼び出されることを発見しました。 今、私はこのブログを検索して見つけました(setState()State Mutation Operation May Resyncous In ReactJS) ここで彼はそれを発見しました setStateは、状態の変化がどのようにトリガーされたかに応じて、非同期(スタックが空のときに呼び出される)または同期(呼び出されるとすぐに呼び出される)。 今これら二つは消化するのが難しい ブログでは、setState関数は関数内で呼び出されますupdateStateが、updateState関数をトリガーしたのは、呼び出された関数が知っているものではありません。 setStateJSが単一スレッド言語であり、このsetStateがWebAPIまたはサーバー呼び出しではないため、なぜJSのスレッドでのみ実行する必要があるのか、なぜ非同期になるのでしょうか。彼らはこれを行っているので、再レンダリングによってすべてのイベントリスナーなどが停止することはありませんか、それとも他の設計上の問題があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.