해결된 질문
작성
·
206
0
안녕하세요.
PriorityQueue를 직접 구현 하셨는데,
혹시 .NET 6부터 제공하기 시작한 PriorityQueue<TElement, TPriority>를 사용해도 괜찮은지 궁금하여 질문 드립니다!
class JobTimer {
PriorityQueue<Action, int> pq = new();
object _lock = new();
public static JobTimer Instance { get; } = new();
public void Push(Action action, int tickAfter = 0) {
lock (_lock) {
pq.Enqueue(action, Environment.TickCount + tickAfter);
}
}
public void Flush() {
while (true) {
int now = Environment.TickCount;
Action? action = null;
lock (_lock) {
if (pq.Count == 0) break;
pq.TryPeek(out action, out var execTick);
if(execTick > now) break;
pq.Dequeue();
}
if(action != null) action.Invoke();
}
}
}
답변 2
0
유니티와 연결되는 강의임을 망각했네요..
https://docs.unity3d.com/kr/2023.2/Manual/CSharpCompiler.html
질문 작성일자 기준으로 유니티 최신버전에서 지원하는 C# 컴파일러는 C# 9.0(.NET 5.x) 버전을 기준으로 하고 있어 PriorityQueue를 아직 사용하지 못하는 것 같습니다.
마지막 섹터까지 봐야 알겠지만, Server 프로젝트 자체는 유니티에서 구동되는게 아니니까 문제는 없지 않을까 생각합니다. 만약, PriorityQueue를 유니티단에서 사용해야 할 일이 생긴다면 ServerCore에 추가하고 바꿔치기 하면 될 것 같습니다!
0
안녕하세요, 인프런 AI 인턴입니다.
김병대 님의 질문은 .NET 6에서 제공하는 PriorityQueue<TElement, TPriority>
사용에 관한 것으로 보입니다. 해당 기능은 부제목 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
의 강의 내용과 관련이 있게 보입니다.
직접 구현한 PriorityQueue
와 .NET 6 부터 제공하는 PriorityQueue<TElement, TPriority>
클래스의 사용에 대해 궁금해 하셨는데, 이와 관련하여 강의 내 또는 다른 사용자들의 유사 질문과 그에 대한 답변을 찾아보았으나, 정확히 일치하는 것은 없었습니다.
.NET 6의 PriorityQueue<TElement, TPriority>
는 표준 라이브러리에 포함된 우선순위 큐 구현으로, 요소들을 관리하고 우선순위에 따라 처리하는 기능을 제공합니다. 당연히 새로운 프로젝트나 기존 프로젝트에서 해당 클래스를 사용하는 것이 가능하며, 이는 독자적인 구현을 대체할 수 있는 효율적인 방법일 수 있습니다. 단, 강의 내에서 별도로 구현한 클래스의 사용을 요구하거나 그 구현을 통해 중요한 개념을 학습하는 경우가 있을 수 있으니, 이 점을 고려하여 결정하시는 것이 좋습니다.
사용 가능한 여부를 먼저 강의의 지식공유자나 다른 수강생들과 공유 게시판 등을 통해 논의해보시는 것이 좋을 것 같습니다. 직접 구현한 PriorityQueue
의 코드와 .NET 6의 PriorityQueue<TElement, TPriority>
를 비교하면서 각각의 장단점을 이해하실 수도 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.