Race Condition

import Foundation

var cards = [1, 2, 3, 4, 5, 6, 7, 8, 9]

DispatchQueue.global().async {
    for _ in 1...2 {
        let card = cards.removeFirst()
        print("데릭: \\(card) 카드를 뽑았습니다!")
    }
}

DispatchQueue.global().async {
    for _ in 1...2 {
        let card = cards.removeFirst()
        print("핀: \\(card) 카드를 뽑았습니다!")
    }
}

DispatchQueue.global().async {
    for _ in 1...2 {
        let card = cards.removeFirst()
        print("휴: \\(card) 카드를 뽑았습니다!")
    }
}

DispatchQueue.global().async {
    for _ in 1...2 {
        let card = cards.removeFirst()
        print("백곰: \\(card) 카드를 뽑았습니다!")
    }
}

/* 
휴: 1 카드를 뽑았습니다!
데릭: 1 카드를 뽑았습니다!
핀: 1 카드를 뽑았습니다!
백곰: 4 카드를 뽑았습니다!
핀: 8 카드를 뽑았습니다!
휴: 6 카드를 뽑았습니다!
백곰: 7 카드를 뽑았습니다!
데릭: 5 카드를 뽑았습니다!
*/

Thread Safe