문의를 남기실 경우 다음 항목을 작성해 주시면 빠른 답변 처리에 도움이 됩니다.
- 프로젝트명 : 뒤끝 공부중
- 뒤끝SDK 버전 : 5.4
- 에러 코드 : 코드 내용 질문좀 드리겠습니다.
안녕하세요. 뒤끝으로 코옵 게임을 꼭 만들고 싶어서 전공자는 아니지만 퇴근후에 계속 공부해보고 있습니다.
뒤끝을 이용해서 뒤끝 로그인과 구글 로그인까지 진행했습니다.
문제는 Dispatcher인데요.
뒤끝 예제 샘플에 디스패쳐 에셋이 있어서 알아보니, 유니티에서 스레드(동시에 여러개의 함수를 실행하는 기능?) 를 쉽게
가능하게 해주는 에셋 이라는걸 알게됐고, 해당 에셋을 받고 사용하려고 하다보니 내용이 너무 어려워서 검색 하다 하다 결국 질문 남기게 되었습니다.ㅠㅜ
제가 Dispatcher 스크립트에서 궁금한 부분입니다.
public void BeginInvoke(Action action)
{
while (true)
{
// 질문 1. Interlocked.Exchange가 무엇인가요?
if (0 == Interlocked.Exchange(ref m_lock, 1))
{
m_wait.Enqueue(action);
m_run = true;
Interlocked.Exchange(ref m_lock, 0);
break;
}
}
}
// 질문 2. 업데이트 내용에 대해서도 궁금합니다.
// m_wait 대기열에 행동해야할 action 이 있을때만 업데이트가 실행되서(m_run), 순차적으로 action 을 실행한다고
// 이해하면 될까요? 자세하게 부탁드립니다.ㅠㅜ
private void Update()
{
if (m_run)
{
Queue execute = null;
if (0 == Interlocked.Exchange(ref m_lock, 1))
{
execute = new Queue(m_wait.Count);
while (m_wait.Count != 0)
{
Action action = m_wait.Dequeue();
execute.Enqueue(action);
}
m_run = false;
Interlocked.Exchange(ref m_lock, 0);
}
if (execute != null)
{
while (execute.Count != 0)
{
Action action = execute.Dequeue();
action();
}
}
}
긴 글 읽어주셔서 감사합니다. 아직 초보 수준이라서 답답한 마음에 글 남겨봅니다.
제가 잘못 이해하고 있는 부분이 있다면 말씀해주셔도 괜찮습니다. 답글 꼭 좀 부탁드립니다.(__)