タグ

スレッドとプログラミングに関するMikatsukiのブックマーク (9)

  • 意味の違いがわかる? タスクとプロセスとスレッド (1/4)

    「マルチタスク」という言葉を目にしたことのない人は、ASCII.jp読者にはまずいないだろう。また、最近ではあまり聞かないが、「タスク」と似たような用語に「ジョブ」がある。そのため、かつては「マルチジョブ」といった表現がされていたこともある。さらに似たような用語として「プロセス」もあり、やはり「マルチプロセス」という用語がある。また、マルチタスクと同じ意味で使われる言葉に、「マルチプログラミング」というものもある。 いずれも意味としては、「複数のアプリケーションを同時に実行できること」を示しているが、どうしてこんなに複数の用語があるのだろう? 理由のひとつは、かつてコンピューターメーカーがOSを作ってたときに、それぞれのメーカーで異なる用語を使っていたことにある。あるメーカーは、アプリケーションを実行することを「タスクを起動」と言い、別のメーカーでは「ジョブを起動」と呼んだわけだ。 今回は

    意味の違いがわかる? タスクとプロセスとスレッド (1/4)
  • BackgroundWorkerクラスを使用して進行状況ダイアログを作成する

    Imports System.ComponentModel Imports System.Windows.Forms ''' <summary> ''' バックグラウンド処理の進行状況を表示するフォーム ''' </summary> Partial Public Class ProgressDialog Inherits Form ''' <summary> ''' ProgressDialogクラスのコンストラクタ ''' </summary> ''' <param name="caption">タイトルバーに表示するテキスト</param> ''' <param name="doWorkHandler">バックグラウンドで実行するメソッド</param> ''' <param name="argument">doWorkで取得できるパラメータ</param> Public Sub Ne

    BackgroundWorkerクラスを使用して進行状況ダイアログを作成する
    Mikatsuki
    Mikatsuki 2017/01/04
    BackgroundWorkerクラスのこと。
  • Lock-freeとWait-freeアルゴリズム - Wikipedia

    Lock-freeとWait-freeアルゴリズムとは、共有データにロックをかけてアクセスを防ぐアルゴリズムとは違い、複数のスレッドが同時並行的に、ある対象データを壊すことなしに読み書きすることを可能にするアルゴリズムである。Lock-free とはスレッドがロックしないことを意味しており、全てのステップにおいてシステムが必ず進行する。これはLock-free ではミューテックスやセマフォといった、排他制御のためのプリミティブを使ってはならないことを意味する。なぜならロックを持っているスレッドの実行が中断した場合、全体の進行を阻止しうるからである。Wait-free とは、他のスレッドの動作に関係なく、スレッドがいかなる操作も有限のステップで操作を完了させられることを指す。あるアルゴリズムがLock-freeであるがWait-freeでないことはありうる。Wait-free なアルゴリズム

  • .NETマルチスレッドプログラミング 2:非同期デリゲートとスレッドプール

    目次 はじめに 対象読者 必要な環境 別スレッドからフォーム、コントロールを扱う Invokeメソッド BeginInvoke・EndInvokeメソッド InvokeRequiredプロパティ MethodInvoker・EventHandlerデリゲート 待機ハンドル ManualResetEvent AutoResetEvent スレッドプール 引数の指定 スレッドプールの制限 非同期デリゲート メソッドの終了を知る コールバックメソッドの使用 非同期メソッド 別スレッドとのデータの受け渡し コールバックデリゲートの使用 Interlockedクラス スレッドの同期を行わずに複数のスレッドから同じフィールドにアクセスする まとめ 参考資料 はじめに 前回のパート1では、コンソールアプリケーションのサンプルを作成しながら、.NET Frameworkにおけるスレッドの実行や同期の方法な

    .NETマルチスレッドプログラミング 2:非同期デリゲートとスレッドプール
  • Invokeとdelegate

    C#のプログラムを作ってて 忘れるといけないのでまとめ 間違ってたり,補足があったらコメントしていただけると助かります. あるメソッドAから別のあるメソッドBを呼び出そうとすると エラーが出る場合がある 例: private void serialPort1_DataReceived(略) { textBox1.text = "hoge"; } みたいな感じにすると止まる. やろうとしてたのはシリアルポートでなにかを受信したら "hoge"をテキストボックスに表示するというアプリケーションの作成 やれない理由は,メソッドAが動いてるスレッド中にメソッドBを無理やり動かそうとするため Windowsフォーム上でフォームを作成した場合,そのフォーム自身以外からのアクセスは動作が保障されていないため まぁ,CheckForIllegalCrossThreadCalls プロパティの値を fals

    Mikatsuki
    Mikatsuki 2015/05/31
    他のスレッドになんたらかんたら。Invokeとdelegateを使うのがセオリーらしい。
  • C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS

    この記事は、インテル® ソフトウェア・ネットワークに掲載されている「32 OpenMP traps for C++ developers」 (http://software.intel.com/en-us/articles/32-openmp-traps-for-c-developers/) の日語参考訳です。 はじめに マルチコアシステムが急速な広がりをみせており、並列プログラミングへの早急な対応が求められています。しかしながら、経験豊富な多くの開発者にとってもこれは新しい分野です。既存のコンパイラーとコード・アナライザーでも、並列コードの開発中に一部の問題を発見することはできますが、多くの問題は検出できません。この記事では、OpenMP* を使用する並列プログラムが正しく動作しない原因となるさまざまな問題について説明します。 概要 並列プログラミングが登場したのはかなり以前のことです

    C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS
  • OpenMP - Wikipedia

    int main(int argc, char *argv[]) { int i; #pragma omp parallel for for (i = 0; i < 10000; ++i) { /* (並列処理させたいプログラム) */ } return 0; } OpenMPはループの反復処理を自動的に複数のスレッドに分割して並行処理できるようにする。例えば4つのスレッドを用いて処理を分割する場合、上記例ではインデックス[0, 2499], [2500, 4999], [5000, 7499], [7500, 9999]の各範囲をそれぞれのスレッドに分担させる、といった具合である。実際にいくつのスレッドを起動するのか、また各スレッドに対してどのように処理を振り分けるのかはOpenMP処理系(コンパイラ)およびプログラム実行環境などの条件に依存する[9]。 以下は区分求積法を用いた円周率π

  • Delegate.BeginInvokeに重い処理はさせるな - 匣の向こう側 - あまりに.NETな

    Delegateを使って手軽に非同期処理を行うことが出来ますが、これには落とし穴があります。 using System; using System.Threading; delegate void Rush(); class Program { static void TheWorld() { Console.WriteLine("\nザ・ワールド!! 時よ止まれ!\n"); while (true) Thread.Sleep(Int16.MaxValue); } static void Muda() { Console.Write("無駄"); while (true) Thread.Sleep(Int16.MaxValue); } static void Mudaa() { Console.WriteLine("無駄ァ!!!!"); Thread.Sleep(1000); Consol

    Delegate.BeginInvokeに重い処理はさせるな - 匣の向こう側 - あまりに.NETな
  • Walkthrough: Multithreading with the BackgroundWorker Component (C# and Visual Basic)

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    Walkthrough: Multithreading with the BackgroundWorker Component (C# and Visual Basic)
  • 1