묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
JobQueue의 Push Execute쪽 코드에 문제가 있는 것 같아 말씀 드려봅니다
안녕하세요? 루키스님 강의를 참고하여 더미 프로젝트 하는 중에 문제가 식별 되어제가 분석한게 맞다면 강의 코드에 문제가 있어 제보 드려봅니다.문제라고 생각되는 부분은 JobQueue 클래스인데요, 문제 상황은'워커스레드를 2개 이상 돌릴 때, Execute()함수가 실행되지 않는'점을 확인하였습니다.jobCount 관련 변수의 조건이 어디서 안 맞는 것 같아서 생각해보건데,아래와 같은 경우라고 생각됩니다.// JobQueue.cpp void JobQueue::Execute() { ... if (_jobCount.fetch_sub(jobCount) == jobCount) { // 여기서 다른 워커 스레드의 _jobCount.fetch_add 발생?! LCurrentJobQueue = nullptr; return; } ... } } 그렇기 때문의 이후의 잡들이 처리되지 못하고 해당 부분에서 prevCount가 계속 쌓이고 있었습니다.// JobQueue.cpp void JobQueue::Push(JobRef job, bool pushOnly) { const int32 prevCount = _jobCount.fetch_add(1); _jobs.Push(job); // WRITE_LOCK // 여기서 prevCount가 계속 쌓여 0이 아님 if (prevCount == 0) { //그러므로 이 부분의 Excute()도 실행되지 않음 ... } 아래는 해당 클래스 cpp 전문입니다.귀한 시간 내시어 확인해주시면 감사하겠습니다!#include "pch.h" #include "JobQueue.h" #include "GlobalQueue.h" /*-------------- JobQueue ---------------*/ void JobQueue::Push(JobRef job, bool pushOnly) { const int32 prevCount = _jobCount.fetch_add(1); _jobs.Push(job); // WRITE_LOCK // 첫번째 Job을 넣은 쓰레드가 실행까지 담당 if (prevCount == 0) { // 이미 실행중인 JobQueue가 없으면 실행 if (LCurrentJobQueue == nullptr && pushOnly == false) { Execute(); } else { // 여유 있는 다른 쓰레드가 실행하도록 GlobalQueue에 넘긴다 GGlobalQueue->Push(shared_from_this()); } } } // 1) 일감이 너~무 몰리면? void JobQueue::Execute() { LCurrentJobQueue = this; while (true) { vector<JobRef> jobs; _jobs.PopAll(OUT jobs); const int32 jobCount = static_cast<int32>(jobs.size()); for (int32 i = 0; i < jobCount; i++) jobs[i]->Execute(); // 남은 일감이 0개라면 종료 if (_jobCount.fetch_sub(jobCount) == jobCount) { LCurrentJobQueue = nullptr; return; } const uint64 now = ::GetTickCount64(); if (now >= LEndTickCount) { LCurrentJobQueue = nullptr; // 여유 있는 다른 쓰레드가 실행하도록 GlobalQueue에 넘긴다 GGlobalQueue->Push(shared_from_this()); break; } } }
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
실전문제풀이 6 19번
'서버가 완전히 활용되고 허용되지 않는다'라는 말이 모호하게 느껴집니다. 개발/테스트 환경이고, 비용을 줄이는 -> 온디맨드 아니면 스팟인데, 이 문제의 정답이 스팟이 아닌 이유가 뭔가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
SAA 섹션 17퀴즈 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요3번 문제에서2번 선지 -다른 AWS 계정의 두 VPC 간 통신이것이 왜 정답인지 모르겠습니다. VPC Peering시, 다른 AWS 계정간 연결도 가능지 않나요 ?? 감사합니당
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기한 연장 부탁드립니다.
안녕하세요 강사님! 수강신청하고 강의를 많이 못듣고 있다가, 최근에 다시 강의를 들으려하니 기간이 얼마 안남았네요. 수강 기한 연장 부탁드립니다. 감사합니다.
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
학습자료가 없어요
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.)- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간연장 부탁드립니다
안녕하세요 강사님! 처음으로 AWS를 공부하고 있는데 여러사정으로 수강을 못하고 있었습니다.수강기간연장 가능할까요?
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
큰돌 선생님 질문이 있습니다.
선생님, 버스 토폴로지 관련 문의 남깁니다.요즘 면접을 위한 CS 전공지식 노트도 참고하며 학습 중인데, Ebook 기준 책의 55page에서 버스 토폴로지의 장점으로 신뢰성이 우수하다고 적혀 있습니다. 이 높은 신뢰성이란 단일 노드의 장애가 타 노드로 전파되지 않는다는 점에서의 신뢰성 인가요? 단점으로 중앙 회선이 망가지면, 관련 서버가 전부 다운 된다는 문제가 있는데, 이 신뢰성이라는 것이 무엇을 뜻하는지 궁금합니다.감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
DBSynchronizer에서의 XML과 DB 동기화 문제
안녕하세요. DB관련 작업중에 이런 문제가 생겨서 어떻게 이런 결과가 생긴 것 인지 궁금해 질문 올려봅니다. 우선 모든 강의를 다 들었다는 전제하에,다음과 같은 XML 코드는 잘 동작합니다.이 코드를 기반으로간단한 로그인 시스템을 만들어 보려고Account Table과 Register Procedure을 만들었는데요문제는 기존에 있는 DB를 가져와서 DBSynchronizer의 Synchronize를 실행하는 부분에Gather 시리즈에 문제가 있습니다.Gather 시리즈를 간략하게 요약하자면, 현재 system에 있는 Table, Column, Procedures들을 모두 긁어서 While(...fetch()) 문으로 DBModel::Table, DBModel::Column등으로 매핑하는 작업입니다.여기서 Fetch할때마다 함수 가장위에 정의해둔 여러 변수들이 갱신되는데요bool값이나 숫자값은 값을 Fetch()가 값을 덮어씌워 별 문제가 없는데 tableName이나 columnName같은 특정 문자열 배열인 경우에 문제가 생겼습니다.위의 사진의 경우 columnName을 순서대로 파싱할경우각 DBModel::Column 별로 name이 accountId, email, pwHash가 되야할게accountId, emailntId, pwHashtId가 되더라구요 그래도 운이좋게끝에 tId가 공통됨으로, WChar 부분이 Fetch()시 완전히 초기화되지 않고 앞의 주소값만 넘어가서 len만큼 채우는것으로 결국 len뒤의 값은 남아 그대로 반영이 된것으로 확인 됬습니다. 각 Loop가 끝날때마다 WChar과 Vector 같은 주소값을 가지는 모든값의 초기화를 이런식으로 명시함으로써 해결할 수 있었지만, 예제코드는 잘 동작했던것을 보아하니 뭔가 코드를 빠뜨렸나 싶었습니다. 참고로 예제 코드의 Gold같은 경우name이 id, gold, name, createDate로 작은값부터 커지기 때문에 위의 문제가 발생하지 않았나 싶기도 합니다. 혹시 이 문제 저만 그런가요?원본 코드에서 spRegister의 out Parameter를 처리하기 위해 살짝 바꾸긴 했는데그거 때문이려나요
-
미해결주니어를 위한 6시간만에 끝내는 AWS 아키텍처
web server / 로드밸런서
web server와 로드밸런서에 대해 질문이 있습니다.아키텍처는 구성하기 나름이겠지만, 보편적으로는 web server(reverse proxy)를 가장 앞단에 두고,aws alb를 그 뒷단에 두고,그 alb 뒷단에 각 종류별 application server를 둔다고 생각하면 될까요?
-
미해결정보처리기능사 필기
정보처리기능사 실기 강의
선생님~ 정보처리기능사 필기 강의 잘 듣고 있는데요,이 시험 실기 강의는 인프런에는 없나요?선생님 실기강의는 어디서 들을 수 있을까요?
-
해결됨실리콘밸리 엔지니어와 함께하는 AWS 네트워크
core 와 네트워크 수업 차이점
제가 듣고 있는게 AWS core 인줄알았더니 network더라고요 ,,하하 질문이있는데 두개의 강의는 좀많이 겹쳐 보이는데 차이점이 먼가요?
-
미해결실습으로 배우는 핵심 네트워크 기술
강의 관련
안녕하세요. 계영수 강사님!강의 정말 유익하게 잘 듣고있습니다.인프런 강의하시기 이전에 STZ에서 강의를 하신 걸로 알고 있는데, 현재는 운영하시지 않는 것 같습니다.네트워크 관련해서 강사님 철학이 저의 공부방향과 맞는 것 같아 강사님의 강의를 더 많이 수강하고 싶습니다.혹시 인프런에 강의를 추가하실 계획이 있으신지? 아니면 다른 사이트에서 강의 중이신지 궁금하고, 해당 사이트를 알려주시면 감사하겠습니다!
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
RDS 접속 시, key 사용 가능 문의
안녕하세요, 강의 항상 잘 듣고 있습니다. 질문이 하나 있습니다!EC2 인스턴스는 비밀번호를 공유하지 않고도 .pem 키 파일만 타 사용자에게 전달하여 접속 권한을 줄 수 있는데요.RDS의 경우에도 비슷하게 비밀번호를 타 사용자와 공유하지 않고, 키 파일(.pem 등) 만 전달해서 접속 권한을 줄 수 있는 방법이 있나요?가능 여부와 함께 간단한 절차도 안내해 주시면 감사하겠습니다.
-
해결됨AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기한 연장 부탁드립니다.
안녕하세요 강사님.퀄리티 높은 강의를 제공해주셔서 감사합니다.여러가지 사정으로 인해 강의를 듣지 못하고 있다가 최근에서야 시간이 생겨서 강의를 다시 들으려고 합니다.다만, 벌써 수강 기간이 얼마 남지 않아서 혹시 가능하시다면 수강 기간을 한번만 연장 부탁 드립니다.감사합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
16:44 부분에서 질문이 있습니다.
16:44 코드를 토대로하여 클라이언트를 한명 추가했을 때, 서버쪽에는 서버 자신과 동적으로 추가된 클라이언트인 플레이어컨트롤러의 원본이 있고(둘다 authority), 클라이언트쪽에는 서버 자신이 참여한 형태인, 복제된 simulatedproxy 와 동적으로 추가된 클라이언트의 복사본 autonomousproxy 2개가 있는건가요? 만약 맞다면, 서버에 있는 각각의 serverrotationyaw 속성을 replication하여 클라이언트 각자 소유한 액터의 변경된 속성을 반영하는건가요?
-
해결됨실리콘밸리 엔지니어와 함께하는 AWS 네트워크
제가 프리티어인데요
안녕하세요 선생님 제가 AWS 프리티어인데요 실습후에 혹시 VPN과 subnet은 남겨도 ES2 같은 인스턴스들은 삭제해야 추가요금이 붙지 않을까요?아니면 삭제 안하고 남겨놔도될까요?그리구 이게 사실 손에 익어야 하는데 사실은 코드처럼 어떻게 실습해야 할지 감이 오지가 않아요.어떤 방법이 좋을까요 단순 반복 작업은 의미가 없다고 생각해서요,,, 팁을 주시면 감사하겠습니다...
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
네트워크 질문 있습니다.
다름이 아니오라, 최근 네트워크 관련하여 다른 분과 의견을 나누던 중 몇 가지 궁금한 점이 생겨 선생님께 질문드립니다. 제가 기존에 이해하고 있던 내용은 아래와 같습니다.㉠ L2 장비는 MAC 주소 기반으로 스위칭한다.㉡ 일반적으로 L2 장비가 L3 장비보다 빠르다.㉢ IGMP는 멀티캐스트 그룹 관리를 위한 프로토콜로, IP 라우팅과 직접적인 관련은 없다. 그런데 상대방은 아래와 같이 다른 의견을 제시하여 혼란스러운 부분이 있었습니다.(㉠에 대한 반론) 솔웨이테크의 Niagara L2 스위치가 IP 기반 라우팅을 수행하는 사례를 근거로 L2 장비도 IP 라우팅이 가능하다고 주장했습니다. 나아가, 이처럼 IP 라우팅 기능이 없는 전통적인 L2 스위치는 이제 기술적으로 낡은 방식으로 취급되어, 현대 네트워크 환경에서는 잘 사용되지 않는다는 의견이었습니다.(㉡에 대한 반론) L3 장비가 상위 계층을 처리하고 더 많은 장비를 연결하므로 L2 장비보다 빠르다고 주장합니다.(㉢에 대한 반론) 효율적인 라우팅을 위해 IGMP가 필수적이라고 합니다. 선생님의 깊이 있는 지식과 경험에 비추어 볼 때, 누구의 의견이 맞는지 명확히 해결해 주실 수 있을 것이라 생각되어 이렇게 질문 드립니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
Broadcast 범위에 대한 질문
MAC 주소에도 Broadcast 주소가 있고 IP주소에도 있는데 MAC주소의 Broadcast 범위와 IP주소의 Broadcast 범위가 다른가요? 범위가 다르다면 무엇을 기준으로 범위를 제한을 하는지 알고 싶습니다.
-
해결됨실리콘밸리 엔지니어와 함께하는 AWS 네트워크
CIDR Ranges에 관해서...
VPC CIDR이 Minimum 이 /28인경우가 이해가안가서요,,,Class c 1바이트 마다 아래처럼 구성되어있다고치면,네트워크 | 네트워크 | 네트워크 | 호스트인데 지금 섭넷팅이 된거겠죠? /28이라하면?그러면 2의 사승 16만큼 사용 가능할테고,강의마지막을 보니 AWS는 아키테쳑에서 bit 5개가 예약이죠.질문은 왜이게 Minimum이 되나요?사실 2개의 호스트만 있어도 되지않나 해서 총 minimum이 /29이어도 되지 않나 생각해봤습니다. (사실 굳이 그럴필요도없지만요,,,)즉 2의 3승 8 -5 는 3개의 호스트로 네트워크가 가능하니까요?즉 섭넷은 2의 13승8192개로 호스트 3개씩 돌릴수있다고 생각하거든요,,같은 이유로 Maximum또한 궁금합니다.Class A는네트워크 호스트 호스트 호스트 인데그러면 8비트인데 이거는 AWS VPC의 범위밖이면 class A는 못쓰나요?
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.
아직까지는 커넥션과 소유권에 대해서 잘 이해하지 못하고 있는 상태이며, 궁금한게 있습니다. 13:07 에서'NetMulticast RPC는 커넥션을 소유하지 않아도 동작한다' 라는 내용이 있는데, 추가적인 정보를 얻어보고자 gpt에 물어보면 자꾸만 '클라이언트와의 커넥션은 필요하지만 소유권이 없어도 된다' 라고 말을 합니다. 그렇다면 gpt가 틀렸다고 보는게 맞을까요? 예를들어 gpt가이 함수는 서버가 호출해야 하고,해당 Actor가 클라이언트에 리플리케이션되어야 하며,해당 클라이언트와 NetConnection이 살아 있어야 전파됩니다.하지만 소유자(Owner)는 없어도 됩니다. 또는 Multicast RPC는 소유권과 무관하게, 그 Actor를 리플리케이션 중인 모든 커넥션에게 전송된다. 라고 이야기를 합니다. 여기서 gpt는 마치 커넥션이 필수인것처럼 이야기하길래, 현재 제가 뭘 놓치고 있는지 궁금하여 여쭤봅니다. 혹시, 강의의 13:07 에서 설명한 '커넥션' 이라는 개념이 'NetConnection 객체 자체' 가 아니라 '소유자 커넥션' 과 밀접한, 예를 들어 '커넥션을 소유하지 읺아도 된다' 라는 설명이 분수대 Actor의 Owner가 특정 클라이언트(PlayerController)가 아니어도 된다는 말로 해석되는 것인가요?