「アトミック」の版間の差分

提供: C言語入門
移動: 案内検索
 
行41: 行41:
 
* [[C言語のマルチスレッドプログラミング]]
 
* [[C言語のマルチスレッドプログラミング]]
 
* [[pthread_mutex_lockとAtomic型修飾子の比較]]
 
* [[pthread_mutex_lockとAtomic型修飾子の比較]]
 +
* [[スレッドセーフ]]
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
-->
 
-->

2016年4月16日 (土) 10:55時点における最新版

アトミック (atomic) とは、不可分、原子的であることです。「あるオペレーション」を「ほかのオペレーション」で割り込むことができないことを言います。

読み方

アトミック
あとみっく
atomic
あとみっく

概要

アトミック操作は、途中に割り込まれない操作です。

銀行口座の入金や出金の処理は、排他制御が必要なクリティカルセクションがあります。排他制御を行いアトミック性を確保します。

ロック

アトミック性を実現するために、ロックが利用されます。 ロックは、セマフォ(Semaphore)やミューテックス(Mutex)が利用されます。

C言語でのアトミックな処理

C11では、 _Atomic と呼ばれるアトミック型修飾子が追加され、アトミック操作(アトミックオペレーション)用のライブラリが提供されました。 ヘッダファイル stdatomic.h をインクルードすることで、_Atomic 型修飾子とアトミックオペレーションの関数を利用します。

C言語のアトミック変数の利用の例

/*
 * stdatomic1.c
 * Copyright (C) 2016 kaoru <kaoru@localhost>
 */
 
#include <stdatomic.h>
#include <stdio.h>
#include <stdlib.h>
 
int
main(int argc, char *argv[])
{
        _Atomic int x;
        _Atomic int x;
        _Atomic int y = ATOMIC_VAR_INIT(255);   // 変数の初期化
        x = y;          // 代入
        exit(EXIT_SUCCESS);
}

関連項目