1

Compare And Swapプログラミングの長所と短所をまとめてくれる人はいますか? (例: マルチコア CPU のパフォーマンス)

Java での例を次に示します。

/**
 * Atomically increments by one the current value.
 *
 * @return the updated value
 */
public final int incrementAndGet() {
    for (;;) {
        int current = get();
        int next = current + 1;
        if (compareAndSet(current, next))
            return next;
    }
}

===編集===

これについては、特にシングル/コア CPU で話してください。

4

2 に答える 2

4

利点: ロックがないため、デッドロックが発生せず、一般的にスケーラビリティが向上します。

短所: 飢餓のリスク (アルゴリズムもウェイトフリーでない限り、しかしこれは一般的には当てはまりません)

edit:wait-free アルゴリズムは、CAS レースに負けたときに、busytrying/startvation の代わりにいくつかの操作を行います。

于 2013-06-03T14:57:44.177 に答える