Linuxのマルチスレッド:基礎概念とPOSIXスレッドの実践
スレッドの基礎概念スレッドとはプロセスを生成する際、カーネルはプロセス制御ブロック(task_struct)、メモリ空間(mm_struct)、およびページテーブルなどを独自に作成し、仮想アドレスと物理アドレスのマッピングを構築する。一方、スレッドの作成時には新たなtask_structが作成されるが、アドレス空間やページテーブルは親プロセスと共有される。プロセス内の実行経 ...
7月17日 20:02 投稿
Linuxでの読み書きロックの使い方
読み書きロックの概要
読み書きロックはミューテックスの進化版で、読込ロックを取得した場合、複数スレッドが並列/並行で読み込み操作を実行可能です。これにより読み込み処理時のパフォーマンスが向上します。一方で書き込みロックは排他制御を行うため、ミューテックスと同様にシリアライズされます。
Linuxではpthread_rwlock_t型で定義されます。この型を用いてロッ ...
7月15日 19:55 投稿
ZooKeeper を用いたシンプルなサービス登録・検出機能(C++): 接続管理層の実装
ZooKeeper クライアントとの永続的な接続を管理し、自動再接続・監視機能を備えた単一ヒープ生成的なハンドラクラスを C++ で実装します。
コピー禁止基底クラス
class CNonCopyable {
protected:
CNonCopyable() = default;
virtual ~CNonCopyable() = default;
CNonCopyable(const CNonCopyable&) = delete;
CNonCopyable& operator=(const CNonC ...
6月3日 19:26 投稿
OSにおけるスレッドの動作原理と並行制御の基礎
スレッドは、単一のプロセス空間内で独立して実行フローを保持する実行コンテキストです。OSのスケジューラが直接対象とする最小の単位であり、親プロセスのヒープやデータセグメント、ファイルディスクリプタテーブルなどを共有しつつ、独自のスタックやレジスタ状態を保持します。これにより、コンテキストスイッチのオーバーヘッドを抑制しながら並列処理を実現します。 ...
5月23日 20:08 投稿