タグ

2015年2月19日のブックマーク (13件)

  • [雑記] スレッド プールとタスク(C# によるプログラミング入門)

    概要 Ver. 4.0 C# 3.0 で導入されたラムダ式と、 .NET 4 で導入された Task、Parallel、ParallelEnumerable などのクラスを使うことで、 非同期処理や並列処理が簡潔に記述できるようになりました。 また、C# 5.0 では非同期処理用の新構文が追加される予定です。 参考: 「非同期処理」 このページでは、これら非同期処理の基礎となる Task クラスや、その背後にあるスレッド プールというものについて説明していきます。 ポイント スレッドはそれなりに高コストなので使い回しをしたい → スレッド プール。 スレッド プールを使った非同期処理を行うには、.NET Framework 4 で導入された Task クラスが便利です。 スレッドを使った非同期処理を行いたい動機としては、以下の2つが挙げられます。 非ブロッキング処理: I/O 待ちとかで

    [雑記] スレッド プールとタスク(C# によるプログラミング入門)
  • 非同期メソッド入門 (4) - UIスレッドとの同期 - xin9le.net

    非同期メソッド入門 (2) - async修飾子とawait演算子でも簡単に書きましたが、await以降の処理はコンパイラによって継続渡しという形に変換されます。そのときのサンプルを再掲します。 private async void Button_Click(object sender, RoutedEventArgs e) { this.button.IsEnabled = false; await HeavyWork(); //--- 何か重たい処理 this.button.IsEnabled = true; } private void Button_Click(object sender, RoutedEventArgs e) { this.button.IsEnabled = false; HeavyWork().ContinueWith(_ => //--- UIに同期的な継続

    非同期メソッド入門 (4) - UIスレッドとの同期 - xin9le.net
  • async/awaitと同時実行制御

    C# 5.0のasync/awaitを使うと、多くの場面ではシングル スレッド的な動作になるし、多くの場面ではlock不要(結果的に、デッドロックが起こりようなくなる)になったりします。 ただし、「多くの場面で」。「必ず」ではないのがはまりどころ。いくつかの場面では、同時実行制御が必要です(普通にマルチスレッドの平行実行になるので、同時に同じデータにアクセスされる可能性を考慮しないとバグります)。 前提知識 いくつか、C# 5.0世代の非同期処理についての前提知識は、以下のスライド(先月末の.NETラボでの発表)を参考にしてください。 5~12ページ: async/awaitの書き方 17~22ページ: スレッドとそのコスト 24~26ページ: スレッド プール 29~32ページ: I/O完了待ちと非同期API 36~40ページ: UIスレッドとディスパッチャー 41~45ページ: 同期コ

    async/awaitと同時実行制御
  • クラウドを支えるこれからの暗号技術

    zk-SNARKs are zero-knowledge succinct non-interactive arguments of knowledge that allow a prover to convince a verifier of a statement without revealing details. They work by converting a function and its inputs/outputs into a quadratic arithmetic program (QAP) represented as polynomials. This allows a verifier to efficiently check a proof generated by the prover using techniques like Lagrange int

    クラウドを支えるこれからの暗号技術
  • HigLaboの技術記事

    HigLaboの技術記事 新着記事 外部サイト 作成中 C# C#の基礎文法 演算子 型とメモリ 条件分岐と繰り返し構文 メソッド 基礎構文とプログラムの品質向上 定数と読取専用変数の違い クロージャと変数のスコープ メソッドと副作用 ラムダ式入門 拡張メソッド Enum.GetValues, EnumWithName(ExtensionMethod)、Enum(Flags、メソッド) LINQ の進化の過程と C# のデザインへの影響 ++C++; //未確認飛行C C#の基礎文法、使い方、裏の仕組みを詳細に解説 .NET Framework スタックメモリとヒープメモリ スタックフレームとメモリ Stringクラスとメモリ ガベージコレクション Large Object Heap 値型のプロパティの罠 オブジェクトのメモリ上のサイズ IDispose リフレクション WeakRefer

    delegate
    delegate 2015/02/19
  • これからの「async/await」の話をしよう

    これからの「async/await」の話をしよう 名古屋GeekBar 2014/09/08 http://www.kekyo.net/2014/09/09/%e3%81%93%e3%82%8c%e3%81%8b%e3%82%89%e3%81%ae%e3%80%8casyncawait%e3%80%8d%e3%81%ae%e8%a9%b1%e3%82%92%e3%81%97%e3%82%88%e3%81%86-%e5%90%8d%e5%8f%a4%e5%b1%8bgeekbar/Read less

    これからの「async/await」の話をしよう
  • neue cc - asyncの落とし穴Part3, async voidを避けるべき100億の理由

    だいぶ前から時間経ってしまいましたが、非同期の落とし穴シリーズPart3。ちなみにまだ沢山ネタはあるんだから!どこいっても非同期は死にますからね! async void vs async Task 自分で書く場合は、必ずasync Taskで書くべき、というのは非同期のベストプラクティスで散々言われていることなのですけれど、理由としては、まず、voidだと、終了を待てないから。voidだと、その中の処理が軽かろうと重かろうと、終了を感知できない。例外が発生しても分からない。投げっぱなし。これがTaskになっていれば、awaitで終了待ちできる。例外を受け取ることができる。await Task.WhenAllで複数同時に走らせたのを待つことができる。はい、async Taskで書かない理由のほうがない。 んじゃあ何でasync voidが存在するかというと、イベントがvoidだから。はい。b

  • Async/Await - 非同期プログラミングのベスト プラクティス

    async void を避ける 使用できる戻り値の型には、Task、Task<T>、および void の 3 つがありますが、async メソッドで自然な戻り値の型は Task と Task<T> だけです。同期コードから非同期コードに変換する際、型 T を返すメソッドはすべて Task<T> を返す async メソッドになり、void を返すメソッドはすべて Task を返す async メソッドになります。次のコード スニペットは、void を返す同期メソッドとそれに相当する非同期メソッドを示しています。 void MyMethod() { // Do synchronous work. Thread.Sleep(1000); } async Task MyMethodAsync() { // Do asynchronous work. await Task.Delay(1000);

    Async/Await - 非同期プログラミングのベスト プラクティス
  • スレッドセーフな配列(List,Dictionary,Queue,Stack)を作成する。(SyncRoot,Synchronized)ジェネリック版。 - tekkの日記 C#,VB.NET

    的に配列の操作はスレッドセーフではないので(あるスレッドが配列に追加・削除している途中で、別スレッドでFor Eachしたら正しく列挙できない)マルチスレッドで配列のデータを操作する場合は、同時に実行されないようにロックする必要があります。 非ジェネリックな配列の型の場合、SyncRootプロパティ、Synchronizedメソッドがありましたがジェネリック型ではIntellisenseに表示されません。ですが、実装されていない訳ではなく、SyncRootの場合はICollectionインタフェースを通じて、Synchronizedメソッドの場合は非ジェネリック型の静的メソッドを通じて、スレッドセーフ化することが出来ます。 ■lockステートメントによるスレッドセーフ化 using System; using System.Collections; using System.Colle

    スレッドセーフな配列(List,Dictionary,Queue,Stack)を作成する。(SyncRoot,Synchronized)ジェネリック版。 - tekkの日記 C#,VB.NET
  • [C#]async/awaitの使い方メモ、その1。 | Kimux.Net

    今後の.NET開発では必須スキルか。 .NETでの非同期処理の書き方があまりにも色々ありすぎて覚えるのも大変。でも、async/awaitを使用した非同期処理は今後重要なキーワードとなってきそうです。 参考 連載:C# 5.0&VB 11.0新機能「async/await非同期メソッド」入門 http://www.atmarkit.co.jp/ait/subtop/features/da/ap_masterasync_index.html ボタンをクリックすると1秒間隔でラベルの文字が変更するプログラムを書く。 フォームのボタンをクリックすると1秒間隔で10回、ラベルの文字が変更するプログラムを考えます。 非同期処理を使わない例。 非同期処理の効用を知るために、非同期処理を使わないで処理を書いてみます。 private void button1_Click(object sender, E

  • Pythonを書き始める前に見るべきTips - Qiita

    Pythonを使ってこの方さまざまな点につまずいたが、ここではそんなトラップを回避して快適なPython Lifeを送っていただくべく、書き始める前に知っておけばよかったというTipsをまとめておく。 Python2系と3系について Pythonには2系と3系があり、3系では後方互換性に影響のある変更が入れられている。つまり、Python3のコードはPython2では動かないことがある(逆もしかり)。 Python3ではPython2における様々な点が改善されており、今から使うなら最新版のPython3で行うのが基だ(下記でも、Python3で改善されるものは明記するようにした)。何より、Python2は2020年1月1日をもってサポートが終了した。よって今からPython2を使う理由はない。未だにPython2を使う者は、小学生にもディスられる。 しかし、世の中にはまだPython3に

    Pythonを書き始める前に見るべきTips - Qiita
  • 勉強しない子には「1冊の手帳」を与えよう!

    コンテンツブロックが有効であることを検知しました。 このサイトを利用するには、コンテンツブロック機能(広告ブロック機能を持つ拡張機能等)を無効にしてページを再読み込みしてください。 ✕

    勉強しない子には「1冊の手帳」を与えよう!
  • 数学を教える人が読んでおきたい論理の本 - hiroyukikojima’s blog

    ぼくは、以前から、論理とゲーム理論とをクロスオーバーさせたを書きたい、というテーマを持っており、それは拙著『数学的推論が世界を変える〜金融・ゲーム・コンピューター』NHKブックスで果たすことができた。 このを書くために、今まで、けっこうな冊数の数理論理学の教科書を読んできた。その中でめぐりあったのが、ゲンツェンの自然演繹と呼ばれる推論規則のセットであった。推論規則というのは、数学の証明で用いられる推論をできるだけ少ない数でセットにしたもので、おおわくではヒルベルトの体系、ゲンツェンのシークエント計算、ゲンツェンの自然演繹、というのがあって、それぞれの演繹能力は同じだけど、体系自体は異なるので、何をしたいかによって有利不利(向き不向き)がある。この3つの中で、普通の数学の証明で利用されている推論の方法は自然演繹が最も近いものである。 ぼくは自然演繹の体系を、鹿島亮『数理論理学』朝倉書店で

    数学を教える人が読んでおきたい論理の本 - hiroyukikojima’s blog