그것은 가능한 한 간단하게 I/O 용으로 보조 스레드를 만들 수있는 좋은 방법입니다 내 CIN 같은 일을하는 다른 방법이 있나요. 주 스레드가 모든 논리를 처리하게하고 값을 상호 배제 된 스택에 푸시하는 스레드를 만듭니다. 그러면 주 스레드가 스택에서 모든 값을 팝하여 그에 따라 반응 할 수 있습니다. 콘솔로 작업 중이므로 동시에 입력 할 수 없으므로 스택이 필요하지 않습니다. 다음은 간단한 예입니다. 이 컴퓨터에는 작동하는 툴체인이 없지만 작동해야하는 것처럼 보입니다.
#include<string>
#include<sdl/sdl.h>
#undef main //I HATE SDL FOR REDEFINING MAIN
class asynccin{
static std::string val;
static int hasval;
static void thread(void*a){
cin >> val;
hasval = 2;
}
public:
static bool begininput(){
if(hasval != 0) return false;
hasval = 1;
SDL_CreateThread(thread, NULL);
}
static bool hasinput(){
return hasval == 2;
}
static std::string reapinput(){
hasval = false;
return val;
}
};
int main{}{
//init SDL
while(true){
//loop stuff
asynccin::begininput();
if(asynccin::hasinput()){
cout << asynccin::reapinput();
}
}
}
흠, 내가 그것을 시도해야 할 것 같아요, 제가 당신을 위해 예를 들어 거기 매우 긴 코드 – Silenced
을하지 않고하고 싶은 일을하기 어려울 것으로 보인다. – Kaslai