cpp thread 예제

C++11 멀티스레딩 지원에 대해 배우기 에 대한 좋은 책은 작업 시 C++ 동시성: 앤서니 윌리엄스의 실용적인 멀티스레딩: 여기서 함수 개체를 만들고 스레드 작업에 할당합니다. 일단 분리되면 스레드는 영원히 그렇게 살아야합니다. 새 스레드는 새 개체를 만든 직후에 시작되며 전달된 콜백을 시작한 스레드와 병렬로 실행합니다. 또한 모든 스레드는 해당 스레드의 개체에서 join() 함수를 호출하여 다른 스레드가 종료될 때까지 기다릴 수 있습니다. std::thread::id는 객체이며 콘솔에서도 비교하고 인쇄할 수 있습니다. 예를 들어, 우리는 데몬 프로세스가 되기 위해 무료로 실행하는 새 스레드를 만들 수 있습니다. C++11 다중 스레딩 파트 2: 스레드 결합 및 디태칭 스레드를 호출할 수 있는 최대 코어 수를 얻으려면: std::thread:::hardware_cuncurrency() : 작업은 스레드와 매우 유사하지만 주요 차이점은 값을 반환할 수 있다는 것입니다. 따라서 스레드를 정의하는 보다 추상적인 방법으로 기억하고 스레드가 값을 반환할 때 사용할 수 있습니다. 다중 스레딩은 플랫폼(운영 체제, 가상 컴퓨터 등) 또는 응용 프로그램이 여러 스레드(스레드)로 구성된 프로세스를 만드는 기능입니다. 실행 스레드는 스케줄러에서 독립적으로 관리할 수 있는 가장 작은 프로그래밍 명령 시퀀스입니다. 이러한 스레드는 병렬로 실행할 수 있으며 프로그램의 효율성을 높일 수 있습니다. 문자열이 실제로 참조로 전달되도록 하기 위해 스레드 함수의 끝에 있는 메시지를 수정했습니다.

그러나 출력이 변경되지 않았습니다. 듀얼 코어 컴퓨터에서이 코드는 직렬 모드 (단일 스레드)에서 코드를 실행 하는 대 병렬로 실행 하기 위한 완벽 한 속도 2 x. 주 스레드가 대기하는 동안 주 스레드는 공회전 중입니다. 실제로 OS는 CPU를 주 스레드에서 멀리 가져갈 수 있습니다. 스레드를 만들 때 함수의 포인터를 해당 생성자에게 전달할 수 있습니다. 스레드가 만들어지면 이 함수는 별도의 스레드에서 작업을 시작합니다. 예제 보기: 프로그램의 일부를 같은 기간에 하나의 스레드에서만 실행하려면 mutex를 사용하여 «잠급니다» : 주 스레드는 스레드가 성공적으로 완료될 때까지 기다려야 합니다. 그래서, 우리는 조인 ()를 사용했습니다. 초기 주 스레드가 새 스레드가 완료될 때까지 기다리지 않으면 main() 끝까지 계속하고 프로그램을 종료합니다( 새 스레드가 실행되기 전에). 보시다시피 스레드 클래스의 기본 생성자가 사용되는 경우 스레드에 정보를 전달하지 않습니다.

즉, 이 스레드에서는 아무 것도 실행되지 않습니다. 스레드를 초기화해야 합니다. 그것은 다른 방법으로 수행 할 수 있습니다. 다음은 스레드에 매개 변수를 전달하는 예입니다. 이 경우 1. id_get_id() – 현재 스레드의 ID를 반환하는 문자열만 전달합니다. C ++11 멀티 스레딩 파트 4: 공유 데이터 및 레이스 조건 joinable() 멤버 함수를 사용하여 스레드가 조인 가능한지 확인할 수 있습니다: 현재 스레드의 ID는 009717C6 현재 시간: 15:28:35 다음 분 동안 시작 대기 중…