Skip to content

Instantly share code, notes, and snippets.

@gunkim
Last active November 2, 2023 01:59
Show Gist options
  • Save gunkim/54a9a72398d6fef6cec41040128a0521 to your computer and use it in GitHub Desktop.
Save gunkim/54a9a72398d6fef6cec41040128a0521 to your computer and use it in GitHub Desktop.
pthread 실시간 CPU 스케줄링 예제 코드
#include <pthread.h> // POSIX 스레드 사용을 위한 헤더 파일
#include <stdio.h> // 입출력 관련 헤더 파일
#define NUM_THREADS 5 // 생성할 스레드의 개수를 정의
// 스레드가 실행할 함수
void *runner(void *param) {
// 스레드 종료
pthread_exit(0);
}
int main(int argc, char *argv[]) {
int i, policy;
pthread_t tid[NUM_THREADS]; // 스레드 ID를 저장할 배열
pthread_attr_t attr; // 스레드 속성
// 스레드 속성 초기화
pthread_attr_init(&attr);
// 현재 스케줄링 정책 조회
if (pthread_attr_getschedpolicy(&attr, &policy) != 0) {
fprintf(stderr, "Unable to get policy.\n"); // 오류 메시지 출력
} else {
// 스케줄링 정책에 따른 메시지 출력
if (policy == SCHED_OTHER) {
printf("SCHED_OTHER\n");
} else if (policy == SCHED_RR) {
printf("SCHED_RR\n");
} else if (policy == SCHED_FIFO) {
printf("SCHED_FIFO\n");
}
}
// 스케줄링 정책을 FIFO로 설정
if (pthread_attr_setschedpolicy(&attr, SCHED_FIFO) != 0) {
fprintf(stderr, "Unable to set policy.\n"); // 오류 메시지 출력
}
// NUM_THREADS 만큼 스레드 생성
for (i = 0; i < NUM_THREADS; i++) {
pthread_create(&tid[i], &attr, runner, NULL);
}
// 모든 스레드가 종료될 때까지 대기
for (i = 0; i < NUM_THREADS; i++) {
pthread_join(tid[i], NULL);
}
return 0; // 프로그램 종료
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment