複数のスレッドから扱うメモリーデータをアクセスする場合に排他をかけたいと考えています。
メモリーデータへのset/get/updateの関数があり、updateの関数では更新した結果を戻したいと考えています。
その場合、どのようにするのが一般的なのでしょうか。

現状は以下のようにすればどうだろうと考えています。

func set(input: Int) {
    let semaphore = dispatch_semaphore_create(0)
    var retval:Int!
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {

        self.クラスデータ = input

        dispatch_semaphore_signal(semaphore)
    }
    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
}


func get() -> Int{
    let semaphore = dispatch_semaphore_create(0)
    var retval:Int!
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {

        retval = self.クラスデータ

        dispatch_semaphore_signal(semaphore)
    }
    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
    return retval
}

(ご指摘により、質問を修正しました)