2011-03-06 4 views
0

유닉스 pthreads 기반의 애플 리케이션에서 나는 특정 클래스 (foo 클래스라고 부름)의 객체를 여러 스레드로 생성한다. 존재하는 객체의 60 초 또는 그 이후에 호출 된 foo 클래스의 특정 공개 메서드가 필요합니다 (정확히 60 초에 발생하는 것이 필수적은 아니며 그 후 60 초 또는 그 직후에 발생합니다).C++ 콜백을위한 thread-safe 타이머

이것을 달성하기 위해 사용할 수있는 타이머는 무엇입니까? 내가 방금 수업에 들려 줄 수 있거나 내가 파생시킬 수있는 것을 찾고 있습니다.

실제 요구 사항은 스레드로부터 안전해야한다는 것입니다.

답변

0

스레드의 상태와 관련된 다양한 플랫폼 별 전제 조건에 따라 특정 시간에 스레드를 강제로 중단 할 수있는 다양한 플랫폼 고유의 메커니즘이 있습니다. 이것들은 당신이 정말로 그것을 필요로하고 왜 그 이유를 알지 않는 한 나쁜 생각입니다.

귀하의 질문에 제공된 정보를 제공하는 올바른 해결책은 단순히 경과 시간을 확인하는 것입니다. 아마도이 스레드는 일종의 루프에서 일부 작업을 수행합니다. 이 루프의 일부로 예를 들어 전화해야합니다. foo :: tick() 그리고 체크가인지 확인하여 60 초가 경과했는지 확인하십시오.

0

타이머를 사용하는 대신 생성자에서 증가하는 클래스 내에서 정적 멤버를 정의하는 것이 어떻습니까? 정적 멤버가 60에 도달하면 조건이 발생하고 다른 곳에서 호출하는 멤버 또는 플래그를 호출합니다.