日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
仕事で、Windows上でプロセス間通信を書くことになった。 プロセス間の同期にはEventかMutexを使うものだと思っていたんだけど、wikipedia:Mutexを見るとMetered Sectionの方が速いと書いてあった。そんなAPIはないので何だろうと思っていたらMSDNの記事 A Quick and Versatile Synchronization Object にソースが載っていた。眺めてみると、File Mapping した共有メモリにInterlockedExchange などの、wikipedia:メモリバリア付きのatomicメモリ操作を行い、さらにWindowsイベントオブジェクトで待機状態を管理するものだった。 wikipedia:コンペア・アンド・スワップなどの操作を共有メモリ中で普通に実行できるんなら、lock-freeアルゴリズムで書かれたコンテナの類を
日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。
大手コンピュータ・メーカー勤務。入社以来10数年をソフトウェア開発の現場で過ごし,その後ソフトウェア品質部へ異動。現場への技術支援や品質教育開発などを主に行っている。「APIで学ぶWindows徹底理解」(日経BP社)などを執筆。 前回は,仮想メモリーの基本的な仕組みと,VirtualAlloc APIを使って,メモリーを動的に割り当てる方法について解説した。ページングを使用して,物理メモリーをプロセスの仮想メモリー空間にマップしている仕組みについては理解していただけたものと思う。今回は,この同じ仕組みを利用した,もう一つの重要な機能について説明する。それが「メモリー・マップト・ファイル」である。 ファイルを仮想メモリーにマッピングして読み書きする メモリー・マップト・ファイル(Memory-Mapped File)とは,名前からは想像しにくいかもしれないが,ディスク上のファイルのデータを
CreateFileMapping と MapViewOfFile を利用すると、プロセス間を超えた共有メモリ空間を作成することができますがー これ、つまりは 「同じメモリ空間に対して、複数のプロセスから同時にアクセスされる可能性がある」 == 排他処理しないと落ちるんじゃね!? とか思いまして調べてみたんです。 …が、どーも、排他処理してるコードが見つからず。Advanced Windows でさえ、排他処理してない。 うーん?本当に大丈夫なのかしら〜? というわけで、実験してみました。↓がコード概略。 最適化してみましたが、/GL はつけませんでした。 // maptest.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include "memtest.h" #include "DummyRead.h" co
サイズや設定を得る 前回はデバイスの情報を得る方法について説明しました 今回は、Windowsの設定やウィンドウを構成する 各要素のサイズなどを得る方法について紹介していきたいと思います ウィンドウを構成する要素とは、タイトルバーやスクロールバーなどのサイズです また、マウスが接続されているかどうかなどの情報も知ることができます これらシステムの情報を得るには GetSystemMetrics() を使います int GetSystemMetrics(int nIndex); nIndex には、取得したい情報の定数を指定します 戻り値は、nIndex で要求した情報を返します 定数は、ページ下部のリファレンスを参照してください 次のプログラムは、マウスのボタンの数 SM_CMOUSEBUTTONS や マウスカーソルの横幅 SM_CXCURSOR と縦幅 SM_CYCURSOR を得て
Win32 API だけでスレッドプールが実装できるのか分からなかったので調べてました. .NET Framework には当たり前のように含まれてるのに. 単純な好奇心からです. 非同期 I/O (4/4) I/O 完了ポート (I/O Completion Port, IOCP) を使った非同期 I/O は、 特に高性能なサーバー開発に欠かせない知識です。ワーカースレッドプー ルと I/O 処理がうまく協調して動く、大変優れた方法です。 Windows でスレッドプールを実現する方法. 図が非常に分かりやすいです. 同じような実装で,C++ クラスのやつがこちら. Japan.internet.com デベロッパー - Windows のスレッドプーリング (CodeZine の記事はこれの再掲載) スレッドプーリングとは、複数の実行スレッドを管理し、処理を各スレ
DIB(デバイス独立ビットマップ)の作成 DIB(デバイス独立ビットマップ)とは、メモリ上の任意の領域をRGB形式(またはカラーテーブルで指定される色の配列)の画像データを格納したビットマップ(フレームバッファ)として扱い、画面などに描画する機能です。Windowsの標準的な画像ファイル形式であるBMPファイルも、このDIBがほぼそのまま格納されています。 DIBの画像データ(ピクセル列)は、普通に確保したバッファにRGBの値を数値データとして書き込むだけですから、プログラムで作成できるデータなら「何でもあり」です。BMPファイル内の画像をメモリに読み込んで画像処理を施してから画面上に描画したり、自力で3DCGの計算を行い画面上に表示するためのフレームバッファとして使用したり、あるいはゲームの画面作成に使用して多彩な画面効果を試してみるのも良いでしょう。 DIBにはいくつか種類があるのです
イメージの生成 さて、ここでダブルバッファリングの基本的概念と扱いに触れましょう ダブルバッファリングとは、早い話が画像更新のちらつきを回避する技術だと思ってください 以前、コンポーネントを更新しつづけることで簡単なアニメーションを表現しました しかし、そのときは更新するたびに画面がちらついていましたね これでは自分のWebページがピカチ○ウ現象に陥りかねません 画面がちらつくのは、コンポーネント更新時に一度背景色で塗りつぶすためです この現象はupdate()メソッドをオーバーライドすることで回避できますが、まだ問題があります 画面に何かを付け足していくようなプログラムの場合は、これで解決することができますが 画面の一部を動的に更新する場合、この方法だけでは実現できません そこでダブルバッファリングが用いられます ダブルバッファリングの基本概念は、イメージの生成です まずオフスクリーンと
このページではマルチスレッド、プロセス間通信、スレッド間通信およびタイマープログラミングについて紹介します。(いやー。好きだなこういう話題は。) 記述例およびサンプルに含まれるファイルの全部、または一部を使用したことによる損害等について、一切の責任を負いません。また、サンプルの文字コードはS-JISで提供しますので、ご使用の際はWindowsからFTPするなどして適切な文字コードに変換してください。尚、サンプル中には説明の簡略化のため意味のないコードや、実用上問題のあるコードも含まれていますのでご注意ください。 [POSIX]pthread_create [POSIX]スレッドの同期(ミューテックス) [POSIX]タイマー [WIN32]_beginthreadex [WIN32]スレッドの同期(ミューテックス) [WIN32]共有メモリ [WIN32]スレッドの同期(イベント) [PO
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く