void 물약()
{
if(gold >= 10000)
{
gold -= 10000
// 물약지급
}
}
물약을 구매하는 조건문 입니다.
gold >= 10000
해당 조건이 true 로 판단하여
gold 를 빼는 코드가 실행되려 합니다.
그런데 if문의 조건은 true 여서
조건문 안으로 들어왔지만
gold 를 빼는 코드가 실행되기 바로 직전에
골드에 변동이 생긴다면?
이런걸 방지 할 수 있을까요
- dc official App
물약 함수가 비동기로 지연더ㅣ서 실행 되는거 아니면 걱정할 필요 없음
스레드를 공부해볼까요?? - dc App
lock 걸고 하시면돼요
모노비헤이비어 상속 받은 클래스면 그런 문제 안 생기는 걸로 앎
유니티 사용하면 싱글쓰레드라 문제 발생안함 서버일 경우 멀티쓰레드 환경에선 lock을 걸거나 보통 재화는 db에 저장되니까 db trasaction걸어서 사용함 lock은 아무데나 막쓰면안되고 최소 단위로만 걸 수 있게 구조짜는게 맞고
gold 변수를 다른 스크립트에서 사용하고 있어도 문제ㅜ없음? - dc App
유니티는 싱글 스레드라 여러 스크립트가 동시에 실행되는 게 아니라 순서대로 실행됨 1번 스크립트가 실행되는 동안 2번 스크립트가 실행되는 건 원칙적으로 불가능한 것도 아니고 완벽하게 불가능함.
만약 돈 체크를 1번 스크립트에서 하고, 그 결과를 2번 스크립트에서 간접적으로 받아서(1번 스크립트에서 직접 호출하는 경우는 상관없음) 하는 식으로 사이에 뭐가 낄 여지가 있다면 주의해야 하겠지만, 아니면 ㄱㅊㄱㅊ
ㄱㅅㄱㅅ - dc App