
Threaded::synchronized 키워드는 C++11에서 추가된 키워드로, multi-threading 환경에서 데이터의 동시 접근을 막는 키워드입니다.
이 키워드를 사용하여 데이터의 동시 접근을 막는 방법은 다음과 같습니다.
1. `synchronized` 키워드를 사용하여 블록을 생성합니다. 이 블록 내에서 데이터의 동시 접근이 막됩니다.
2. `synchronized` 키워드는 자동으로 `lock()` 함수를 호출하여 데이터의 동시 접근을 막습니다.
3. 블록이 종료되면 `synchronized` 키워드는 자동으로 `unlock()` 함수를 호출하여 데이터의 동시 접근을 허용합니다.
예시 코드를 살펴보겠습니다.
#hostingforum.kr
cpp
#include
#include
class Counter {
public:
void increment() {
synchronized(this) { // lock() 함수가 자동 호출됩니다.
count++;
} // unlock() 함수가 자동 호출됩니다.
}
private:
int count = 0;
};
int main() {
Counter counter;
std::thread threads[10];
for (int i = 0; i < 10; i++) {
threads[i] = std::thread([&counter] {
for (int j = 0; j < 10000; j++) {
counter.increment();
}
});
}
for (auto& thread : threads) {
thread.join();
}
std::cout << "Final count: " << counter.count << std::endl;
return 0;
}
이 코드는 `Threaded::synchronized` 키워드를 사용하여 데이터의 동시 접근을 막는 방법이 정확합니다.
`Threaded::synchronized` 키워드를 사용하여 데이터의 동시 접근을 막는 방법과 `Threaded::lock()`과 `Threaded::unlock()` 함수를 사용하는 방법의 차이점은 다음과 같습니다.
* `Threaded::synchronized` 키워드는 자동으로 `lock()` 함수를 호출하여 데이터의 동시 접근을 막습니다. 반면, `Threaded::lock()` 함수를 직접 호출하여 데이터의 동시 접근을 막습니다.
* `Threaded::synchronized` 키워드는 자동으로 `unlock()` 함수를 호출하여 데이터의 동시 접근을 허용합니다. 반면, `Threaded::unlock()` 함수를 직접 호출하여 데이터의 동시 접근을 허용합니다.
`Threaded::synchronized` 키워드를 사용하여 데이터의 동시 접근을 막는 방법과 `Threaded::mutex`를 사용하는 방법의 차이점은 다음과 같습니다.
* `Threaded::synchronized` 키워드는 자동으로 `mutex`를 생성하고 `lock()` 함수를 호출하여 데이터의 동시 접근을 막습니다. 반면, `Threaded::mutex`를 직접 생성하고 `lock()` 함수를 호출하여 데이터의 동시 접근을 막습니다.
* `Threaded::synchronized` 키워드는 자동으로 `unlock()` 함수를 호출하여 데이터의 동시 접근을 허용합니다. 반면, `Threaded::unlock()` 함수를 직접 호출하여 데이터의 동시 접근을 허용합니다.
결론적으로, `Threaded::synchronized` 키워드는 `mutex`를 자동으로 생성하고 `lock()` 함수를 호출하여 데이터의 동시 접근을 막는 키워드입니다.
2025-05-28 05:35