책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/multi-threading)
PC에서 직접 간단한 예제를 실행하면서 배우는 RTOS 프로그래밍 입문서!
ARM과 스레드X를 이용한 RTOS 멀티스레드 프로그래밍의 이해
현업에서 가장 널리 쓰이는 RTOS와 프로세서를 이용해 임베디드 애플리케이션을 개발해 보자. 이 책은 임베디드의 실시간 개념과 용어부터 구체적인 예제까지, 당장 활용할 수 있는 실전 지식을 다루고 있다. ARM® 프로세서 개요, 스레드X® 실시간 운영체제(RTOS)가 제공하는 모든 서비스에 대한 상세한 설명을 통해 실제 시스템을 구축하는 데 필요한 구체적인 내용을 배울 수 있을 것이다. 또 책 마지막 부분의 사례 연구를 통해 흔히 맞닥뜨리는 문제에 대한 대처법 등 모든 내용을 실전 지식으로 체득할 수 있게 했다.
스레드X와 ARM 프로세서는 실시간 멀티스레딩 임베디드 시스템 개발방법을 배우기에 이상적인 조합이다. ARM 마이크로프로세서는 그 단순한 구조 때문에 휴대폰에서 레이저 프린터까지 다양한 장치에서 널리 사용되고 있다. Express Logic의 스레드X RTOS 역시 신뢰성 있는 멀티스레딩 지원과 단순한 구조 때문에 ARM 프로세서용 RTOS 중 가장 널리 쓰는 운영체제 중 하나다.
[ 이 책의 내용과 대상 ]
이 책은 현재 임베디드 시스템을 개발하고 있거나 임베디드 시스템 개발 과정을 더 잘 알기를 원하는 사람들을 위한 것이다. 임베디드 시스템 개발자는 보통 소프트웨어 혹은 전기, 전자 분야의 엔지니어지만 그 밖의 다른 분야 종사자들도 이 분야에 지대한 공헌을 해왔다. 이 책에서는 특히 더 작고, 빠르며, 정해진 시간 내에 동작하고 오류가 발생하지 않는 임베디드 응용을 다룬다.
이 책에서는 임베디드와 실시간 관련 개념, ARM® 프로세서, 스레드X(ThreadX) 실시간 운영체제(RTOS)에서 제공하는 모든 서비스, 전통적인 문제에 대한 해법, 사례 연구 등의 내용을 총 14장에 걸쳐 담았다. 또 이 책은 C 나 C++ 프로그래밍 경험이 있는 독자층을 염두에 뒀다. 따라서 프로그래밍 기본에 대해서는 굳이 설명하지 않을 것이다. 독자의 배경 지식에 따라 이 책의 각 장은 각기 별도로 읽어도 무방하다.
임베디드 시스템을 다루고 있는 훌륭한 서적은 물론 많다. 하지만 대부분은 포괄적이고 일반적인 관점에서 쓴 것이다. 이 책은 전형적 상용 RTOS와 마이크로프로세서를 택해서, 이를 활용한 임베디드 시스템 개발을 다루고 있다는 점에서 독특하다. 이 접근법은 각 시스템에 맞게 적용해야 하는 일반적인 개념을 설명하기 보다는 구체적인 지식과 기술을 제공하는 장점이 있다. 따라서 이 책에서 다루는 내용은 즉시 적용해 볼 수 있을 것이다.
임베디드 응용 개발을 위해 실제 RTOS를 주된 도구로 사용하므로 RTOS를 직접 개발하거나 RTOS를 사용하지 않는 경우의 이점 등에 대해서는 언급하지 않겠다. 직접 RTOS를 만들 때에 비해 적당한 가격의 상용 RTOS를 사용할 때 얻는 이점은 상당하다. 예를 들어 대부분의 상용 RTOS 개발 회사는 이미 수년간 자사의 시스템을 다듬고 최적화해왔다. 상용 RTOS 회사가 가진 전문 지식과 제품 지원이 성공적인 시스템 개발에 중요한 역할을 할 수도 있다.
이 책에서 선정한 RTOS는 스레드X2 (버전 4)이다. 스레드X는 신뢰성이 높고, 사용이 쉬우며, 가격도 저렴하고, 널리 사용되고 있다. 또 OS 개발자의 풍부한 경험으로 제품의 성숙도가 높다. 스레드X는 현대 RTOS가 지니는 대부분의 특성을 갖고 있고, 그 외 몇가지 진보된 특성을 제공한다. 또 하나의 언급할 만한 특성은 스레드X의 API에 사용된 일관성있고 읽기 쉬운 코딩 규약(coding convention)이다. API의 논리적 접근 방식 덕분에 직관적인 응용 프로그램 개발이 가능해졌다.
이 책에서는 주로 C 프로그래밍 언어를 사용했지만, 경우에 따라 C++를 사용할 수도 있다.
부록 CD에는 스레드X3의 Win32버전을 실었다. 이 시스템을 이용해 스스로 고안한 테스트를 해보고, 데모 시스템을 돌려보거나, 책에 제시된 프로젝트를 테스트해볼 수도 있을 것이다.
[ 부록 CD 포함 ]
부록 CD에 있는 Win32 기반 스레드X 데모 시스템을 이용해 책에 나온 모든 예제와 각 장 끝에 수록한 프로젝트, 사례 연구를 실행해 볼 수 있다.
(https://github.com/AcornPublishing/multi-threading)
PC에서 직접 간단한 예제를 실행하면서 배우는 RTOS 프로그래밍 입문서!
ARM과 스레드X를 이용한 RTOS 멀티스레드 프로그래밍의 이해
현업에서 가장 널리 쓰이는 RTOS와 프로세서를 이용해 임베디드 애플리케이션을 개발해 보자. 이 책은 임베디드의 실시간 개념과 용어부터 구체적인 예제까지, 당장 활용할 수 있는 실전 지식을 다루고 있다. ARM® 프로세서 개요, 스레드X® 실시간 운영체제(RTOS)가 제공하는 모든 서비스에 대한 상세한 설명을 통해 실제 시스템을 구축하는 데 필요한 구체적인 내용을 배울 수 있을 것이다. 또 책 마지막 부분의 사례 연구를 통해 흔히 맞닥뜨리는 문제에 대한 대처법 등 모든 내용을 실전 지식으로 체득할 수 있게 했다.
스레드X와 ARM 프로세서는 실시간 멀티스레딩 임베디드 시스템 개발방법을 배우기에 이상적인 조합이다. ARM 마이크로프로세서는 그 단순한 구조 때문에 휴대폰에서 레이저 프린터까지 다양한 장치에서 널리 사용되고 있다. Express Logic의 스레드X RTOS 역시 신뢰성 있는 멀티스레딩 지원과 단순한 구조 때문에 ARM 프로세서용 RTOS 중 가장 널리 쓰는 운영체제 중 하나다.
[ 이 책의 내용과 대상 ]
이 책은 현재 임베디드 시스템을 개발하고 있거나 임베디드 시스템 개발 과정을 더 잘 알기를 원하는 사람들을 위한 것이다. 임베디드 시스템 개발자는 보통 소프트웨어 혹은 전기, 전자 분야의 엔지니어지만 그 밖의 다른 분야 종사자들도 이 분야에 지대한 공헌을 해왔다. 이 책에서는 특히 더 작고, 빠르며, 정해진 시간 내에 동작하고 오류가 발생하지 않는 임베디드 응용을 다룬다.
이 책에서는 임베디드와 실시간 관련 개념, ARM® 프로세서, 스레드X(ThreadX) 실시간 운영체제(RTOS)에서 제공하는 모든 서비스, 전통적인 문제에 대한 해법, 사례 연구 등의 내용을 총 14장에 걸쳐 담았다. 또 이 책은 C 나 C++ 프로그래밍 경험이 있는 독자층을 염두에 뒀다. 따라서 프로그래밍 기본에 대해서는 굳이 설명하지 않을 것이다. 독자의 배경 지식에 따라 이 책의 각 장은 각기 별도로 읽어도 무방하다.
임베디드 시스템을 다루고 있는 훌륭한 서적은 물론 많다. 하지만 대부분은 포괄적이고 일반적인 관점에서 쓴 것이다. 이 책은 전형적 상용 RTOS와 마이크로프로세서를 택해서, 이를 활용한 임베디드 시스템 개발을 다루고 있다는 점에서 독특하다. 이 접근법은 각 시스템에 맞게 적용해야 하는 일반적인 개념을 설명하기 보다는 구체적인 지식과 기술을 제공하는 장점이 있다. 따라서 이 책에서 다루는 내용은 즉시 적용해 볼 수 있을 것이다.
임베디드 응용 개발을 위해 실제 RTOS를 주된 도구로 사용하므로 RTOS를 직접 개발하거나 RTOS를 사용하지 않는 경우의 이점 등에 대해서는 언급하지 않겠다. 직접 RTOS를 만들 때에 비해 적당한 가격의 상용 RTOS를 사용할 때 얻는 이점은 상당하다. 예를 들어 대부분의 상용 RTOS 개발 회사는 이미 수년간 자사의 시스템을 다듬고 최적화해왔다. 상용 RTOS 회사가 가진 전문 지식과 제품 지원이 성공적인 시스템 개발에 중요한 역할을 할 수도 있다.
이 책에서 선정한 RTOS는 스레드X2 (버전 4)이다. 스레드X는 신뢰성이 높고, 사용이 쉬우며, 가격도 저렴하고, 널리 사용되고 있다. 또 OS 개발자의 풍부한 경험으로 제품의 성숙도가 높다. 스레드X는 현대 RTOS가 지니는 대부분의 특성을 갖고 있고, 그 외 몇가지 진보된 특성을 제공한다. 또 하나의 언급할 만한 특성은 스레드X의 API에 사용된 일관성있고 읽기 쉬운 코딩 규약(coding convention)이다. API의 논리적 접근 방식 덕분에 직관적인 응용 프로그램 개발이 가능해졌다.
이 책에서는 주로 C 프로그래밍 언어를 사용했지만, 경우에 따라 C++를 사용할 수도 있다.
부록 CD에는 스레드X3의 Win32버전을 실었다. 이 시스템을 이용해 스스로 고안한 테스트를 해보고, 데모 시스템을 돌려보거나, 책에 제시된 프로젝트를 테스트해볼 수도 있을 것이다.
[ 부록 CD 포함 ]
부록 CD에 있는 Win32 기반 스레드X 데모 시스템을 이용해 책에 나온 모든 예제와 각 장 끝에 수록한 프로젝트, 사례 연구를 실행해 볼 수 있다.
목차
목차
- 1장 임베디드, 실시간 시스템
- 1.1 소개
- 1.2 임베디드 시스템은 무엇인가?
- 1.3 임베디드 시스템의 특성
- 1.4 실시간 시스템
- 1.5 실시간 운영체제와 실시간 커널
- 1.6 프로세스, 태스크, 스레드
- 1.7 실시간 시스템의 구조
- 1.8 임베디드 시스템 개발
- 2장 RTOS를 사용한 시스템과의 첫 만남
- 2.1 운영 환경
- 2.2 스레드X 데모 시스템 설치
- 2.3 2개의 스레드를 사용하는 예제 시스템
- 2.4 스레드X 객체 생성
- 2.5 예제시스템 컴파일과 실행
- 2.6 시스템과 출력결과 분석
- 2.7 02samplesystem.c 예제
- 2.8 생각해볼 문제
- 3장 RTOS 관련 개념 및 용어 정의
- 3.1 소개
- 3.2 우선순위
- 3.3 준비 스레드와 중지 스레드
- 3.4 우선순위 기반 선점형 스케줄링
- 3.5 라운드 로빈 스케줄링
- 3.6 확정성
- 3.7 커널
- 3.8 RTOS
- 3.9 문맥 전환
- 3.10 타임 슬라이스
- 3.11 인터럽트 처리
- 3.12 스레드 기아현상
- 3.13 우선순위 역전현상
- 3.14 우선순위 상속
- 3.15 선점 한계치
- 3.16 생각해볼 문제
- 4장 시스템 개발을 위한 RTOS 구성요소
- 4.1 소개
- 4.2 공개 자원의 정의
- 4.3 스레드X 데이터 타입
- 4.4 스레드
- 4.5 메모리 풀
- 4.6 응용 프로그램 타이머
- 4.7 뮤텍스
- 4.8 카운팅 세마포어
- 4.9 이벤트 플래그 그룹
- 4.10 메시지 큐
- 4.11 스레드 동기화와 통신용 구성요소 요약
- 4.12 생각해볼 문제
- 5장 ARM 마이크로프로세서 소개
- 5.1 소개
- 5.2 역사
- 5.3 기술적 특징
- 5.3.1 시스템 온 칩(SoC) 호환성
- 5.3.2 낮은 전력 소모
- 5.3.3 향상된 코드 밀도
- 5.3.4 다용도 레지스터 집합
- 5.3.5 CPSR 정의
- 5.3.6 프로세서 모드
- 5.4 ARM 전력 절약 지원
- 6장 스레드-핵심 구성요소
- 6.1 소개
- 6.2 스레드 제어 블록
- 6.3 스레드 서비스 요약
- 6.4 스레드 생성
- 6.5 스레드 제거
- 6.6 스레드 식별
- 6.7 스레드 정보 얻기
- 6.8 선점 한계치 변경
- 6.9 우선순위 변경
- 6.10 제어 양도
- 6.11 스레드 실행 재개
- 6.12 스레드 수면
- 6.13 스레드 일시 중지
- 6.14 응용 프로그램 스레드 종료
- 6.15 타임 슬라이스 변경
- 6.16 스레드 일시 중지 중단
- 6.17 스레드 실행 개요
- 6.18 스레드 상태
- 6.19 스레드 설계
- 6.19.1 스레드 수를 최소화하라
- 6.19.2 우선순위를 주의깊게 선택하라
- 6.19.3 우선순위 수를 최소화하라
- 6.19.4 선점 한계치 사용을 고려하라
- 6.19.5 우선순위 상속을 고려하라
- 6.19.6 라운드 로빈 스케줄링 사용을 고려하라
- 6.19.7 타임 슬라이싱 사용을 고려하라
- 6.20 스레드 내부
- 6.21 요약
- 6.22 생각해볼 문제
- 7장 상호 배제 문제와 고려사항
- 7.1 소개
- 7.2 크리티컬 섹션 보호
- 7.3 공유 자원에 대한 독점적 접근 제공
- 7.4 뮤텍스 제어 블록
- 7.5 뮤텍스 서비스 요약
- 7.6 뮤텍스 생성
- 7.7 뮤텍스 제거
- 7.8 뮤텍스 소유권 얻기
- 7.9 뮤텍스 정보 얻기
- 7.10 뮤텍스 중지 목록에 우선순위 적용하기
- 7.11 뮤텍스 소유권 놓기
- 7.12 교착 상태 피하기
- 7.13 뮤텍스로 크리티컬 섹션을 보호하는 예
- 7.14 예제 시스템 출력
- 7.15 07samplesystem.c 예제
- 7.16 뮤텍스 내부 동작
- 7.17 요약
- 7.18 생각해볼 문제
- 8장 메모리 관리-바이트 풀과 블록 풀
- 8.1 소개
- 8.2 메모리 바이트 풀 요약
- 8.3 메모리 바이트 풀 제어 블록
- 8.4 메모리 바이트 풀 사용에 따른 함정
- 8.5 바이트 풀 서비스 요약
- 8.6 메모리 바이트 풀 생성
- 8.7 메모리 바이트 풀에서 할당받기
- 8.8 메모리 바이트 풀 제거
- 8.9 메모리 바이트 풀 정보 얻기
- 8.10 메모리 바이트 풀 중지 목록에 우선순위 적용하기
- 8.11 바이트 풀에 메모리 돌려주기
- 8.12 메모리 바이트 풀 예제-스레드 스택 할당
- 8.13 메모리 바이트 풀 내부
- 8.14 메모리 블록 풀 요약
- 8.15 메모리 블록 풀 제어 블록
- 8.16 메모리 블록 풀 서비스 요약
- 8.17 메모리 블록 풀 생성
- 8.18 메모리 블록 할당
- 8.19 메모리 블록 풀 제거
- 8.20 메모리 블록 풀 정보 얻기
- 8.21 메모리 블록 풀 중지 목록에 우선순위 적용
- 8.22 메모리 블록 돌려주기
- 8.23 메모리 블록 풀 예제-스레드 스택 할당
- 8.24 메모리 블록 풀 내부
- 8.25 요약 및 비교
- 8.27 생각해볼 문제
- 9장 내부 시스템 클럭과 응용 프로그램 타이머
- 9.1 소개
- 9.2 내부 시스템 클럭 서비스
- 9.3 응용 프로그램 타이머 제어 블록
- 9.4 응용 프로그램 타이머 서비스 요약
- 9.5 응용 프로그램 타이머 생성
- 9.6 응용프로그램 타이머 활성화
- 9.7 응용프로그램 타이머 변경
- 9.8 응용프로그램 타이머 비활성화
- 9.9 응용프로그램 타이머 제거
- 9.10 응용프로그램 타이머 정보얻기
- 9.11 타이머로 스레드 성능 측정하는 예제 시스템
- 9.12 09samplesystem.c 예제
- 9.13 응용프로그램 타이머 내부
- 9.14 요약
- 9.15 생각해볼 문제
- 10장 이벤트 알림과 카운팅 세마포어를 이용한 동기화
- 10.1 소개
- 10.2 카운팅 세마포어 제어 블록
- 10.3 교착 상태 피하기
- 10.4 우선순위 역전현상 피하기
- 10.5 카운팅 세마포어 관련 서비스 요약
- 10.6 카운팅 세마포어 생성
- 10.7 카운팅 세마포어 제거
- 10.8 카운팅 세마포어 인스턴스 얻기
- 10.9 카운팅 세마포어 정보 얻기
- 10.10 카운팅 세마포어 중지 목록에 우선순위 적용
- 10.11 카운팅 세마포어 인스턴스 추가
- 10.12 카운팅 세마포어와 뮤텍스간 비교
- 10.13 뮤텍스 대신 바이너리 세마포어를 사용하는 예제 시스템
- 10.14 10asamplesystem.c 예제
- 10.15 카운팅 세마포어를 사용하는 생산자-소비자 응용프로그램 예제
- 10.16 10bsamplesystem.c 예제
- 10.17 카운팅 세마포어 내부
- 10.18 요약
- 10.19 생각해볼 문제
- 11장 이벤트 플래그 그룹으로 스레드 동기화 하기
- 11.1 소개
- 11.2 이벤트 플래그 그룹 제어 블록
- 11.3 이벤트 플래그 그룹 제어 서비스 요약
- 11.4 이벤트 플래그 그룹 생성
- 11.5 이벤트 플래그 그룹 제거
- 11.6 이벤트 플래그 그룹에서 플래그 얻기
- 11.7 이벤트 플래그 그룹 정보 얻기
- 11.8 이벤트 플래그 그룹 내 이벤트 플래그 세트하기
- 11.9 스레드 2개를 동기화하기 위해 이벤트 플래그 그룹을 쓰는 예제 시스템
- 11.10 11samplesystem.c 예제
- 11.11 이벤트 플래그 그룹 내부
- 11.12 요약
- 11.13 생각해볼 문제
- 12장 메시지 큐를 통한 스레드간 통신
- 12.1 소개
- 12.2 메시지 큐 제어 블록
- 12.3 메시지 큐 서비스 요약
- 12.4 메시지 큐 생성
- 12.5 메시지 큐에 메시지 발신
- 12.6 메시지 큐에서 메시지 수신
- 12.7 메시지 큐 제거
- 12.8 메시지 큐 내용 버리기
- 12.9 메시지 큐 선두로 메시지 송신
- 12.10 메시지 큐 정보 얻기
- 12.11 메시지 큐 중지 목록에 우선순위 적용
- 12.12 스레드 간 통신에 메시지 큐를 사용하는 예제 시스템
- 12.13 12samplesystem.c 예제
- 12.14 메시지 큐 내부
- 12.15 요약
- 12.16 생각해볼 문제
- 13장 ARM 예외 처리
- 13.1 소개
- 13.2 스레드X의 ARM 예외 처리 구현
- 13.2.1 리셋 벡터 초기화
- 13.2.2 스레드 스케줄링
- 13.2.3 스레드X 인터럽트 처리
- 13.2.4 내부 인터럽트 처리
- 14장 사례 연구: 멀티스레드 시스템 설계
- 14.1 소개
- 14.2 문제 정의
- 14.3 문제 분석
- 14.4 시스템 설계
- 14.4.1 스레드 설계
- 14.4.2 공개 자원 설계
- 14.5 구현
- 14.6 VAM 시스템 예제
- 14.7 요약
- 부록 소개
- 부록 A 메모리 블록 풀 서비스
- A.1 txblockallocate
- A.2 txblockpool_create
- A.3 txblockpool_delete
- A.4 txblockpoolinfoget
- A.5 txblockpool_prioritize
- A.6 txblockrelease
- 부록 B 메모리 바이트 풀 서비스
- B.1 txbyteallocate
- B.2 txbytepool_create
- B.3 txbytepool_delete
- B.4 txbytepoolinfoget
- B.5 txbytepool_prioritize
- B.6 txbytepool_release
- 부록 C 이벤트 플래그 그룹 서비스
- C.1 txeventflags_create
- C.2 txeventflags_delete
- C.3 txeventflags_get
- C.4 txeventflagsinfoget
- C.5 txeventflags_set
- 부록 D 인터럽트 제어 서비스
- D.1 txinterruptcontrol
- D.1 txinterruptcontrol
- 부록 E 뮤텍스 서비스
- E.1 txmutexcreate
- E.2 txmutexdelete
- E.3 txmutexget
- E.4 txmutexinfo_get
- E.5 txmutexprioritize
- E.6 txmutexput
- 부록 F 메시지 큐 서비스
- F.1 txqueuecreate
- F.2 txqueuedelete
- F.3 txqueueflush
- F.4 txqueuefront_send
- F.5 txqueueinfo_get
- F.6 txqueueprioritize
- F.7 txqueuereceive
- F.8 txqueuesend
- 부록 G 카운팅 세마포어 서비스
- G.1 txsemaphorecreate
- G.2 txsemaphoredelete
- G.3 txsemaphoreget
- G.4 txsemaphoreinfo_get
- G.5 txsemaphoreprioritize
- G.6 txsemaphoreput
- 부록 H 스레드 서비스
- H.1 txthreadcreate
- H.2 txthreaddelete
- H.3 txthreadidentify
- H.4 txthreadinfo_get
- H.5 txthreadpreemption_change
- H.6 txthreadpriority_change
- H.7 txthreadrelinquish
- H.8 txthreadresume
- H.9 txthreadsleep
- H.10 txthreadsuspend
- H.11 txthreadterminate
- H.12 txthreadtimeslicechange
- H.13 txthreadwait_abort
- 부록 I 내부 시스템 클럭 서비스
- I.1 txtimeget
- I.2 txtimeset
- 부록 J 응용프로그램 타이머 서비스
- J.1 txtimeractivate
- J.2 txtimerchange
- J.3 txtimercreate
- J.4 txtimerdeactivate
- J.5 txtimerdelete
- J.6 txtimerinfo_get
- 부록 K 스레드X API
- K.1 스레드X 진입
- K.2 바이트 풀 메모리 서비스
- K.3 블록 풀 메모리 서비스
- K.4 이벤트 플래그 그룹 서비스
- K.5 인터럽트 제어 서비스
- K.6 메시지 큐 서비스
- K.7 카운팅 세마포어 서비스
- K.8 뮤텍스 서비스
- K.9 스레드 서비스
- K.10 시각 서비스
- K.11 응용프로그램 타이머 서비스
- 찾아보기
관련 블로그 글
스페셜 이슈 12호: 멀티코어 세상, 병렬 프로그래밍
[##_1L|1252311642.jpg|width="110" height="175" alt="사용자 삽입 이미지"|_##]IBM 디벨로퍼 웍스에도 글을 꾸준히 기고해오시고, 저희 에이콘에서 펴낸 『실시간 임베디드 멀티스레딩: 누구나 쉽게 이해할 수 있는 RTOS 멀티스레드 프로그래밍』을 번역하기도 하신 김도형님께서 멀티코어 시대의 개발자 생존전략, 병렬 프로그래밍이라는 밀도 높은 스페셜 이슈 글을 써주셨습니다.
사람이 생각하기 어렵고 자동검증수단도 없는 멀티스레드 프로그래밍. 그리고 내 상식과 다르게 동작하는 컴퓨터. 멀티스레드 프로그래밍은 순차적 사고를 하는 프로그래머에게 상당한 정신적 부담을 줍니다. 멀티코어 프로세서를 장착한 하드웨어가 저렴하게 널리 보급되기 시작한 요즘, 이젠 멀티스레드나 병렬 프로그래밍을 어렵다고 무작정 피할 수만도 없게 됐습니다.아울러 『멀티코어를 100% 활용하는 자바 병렬 프로그래밍』에 대한 간략한 설명도 덧붙여주셨습니다. 과연 멀티스레드 프로그래밍은 왜 난점은 무엇이며, 난국을 타개하는 해결책은 무엇일지 관심있는 분들께서는 이번 스페셜 이슈 글을 주목해보세요.
이 책이 좋은 이유는 우선 프로그래머의 직관이 아닌 체계적인 절차에 의해 스레드에 안전한 클래스를 작성할 수 있는 방법을 제시한다는 점이다. 체계적이라는 것은 기본 규칙만 서로 공유하면 쉽게 코드의 동기화 구조를 이해하고 검증할 수 있으며 남이 작성한 코드를 수정할 때에도 지켜야 하는 규칙을 쉽게 파악할 수 있다는 뜻이다. 이런 방법을 제시하는데 있어 객체 지향적인 설계를 강력한 도구로 활용한다는 점도 바람직한 점이자 이전의 책들과 다른 점이다.▷▶ 스페셜 이슈 제12호 글 보러가기
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
도서 오류 신고
정오표
[ p55 아래에서 3행 ]
만약 여러 스레드에서 호출되면 잘못된 포인터를 돌려줄 수도 높다.
→ 만약 여러 스레드에서 호출되면 잘못된 포인터를 돌려줄 수도 있다.
[ p64 6.14절 코드 부분 ]
status = tx_thread_suspend (&some_thread);
→ status = tx_thread_terminate (&some_thread);
만약 여러 스레드에서 호출되면 잘못된 포인터를 돌려줄 수도 높다.
→ 만약 여러 스레드에서 호출되면 잘못된 포인터를 돌려줄 수도 있다.
[ p64 6.14절 코드 부분 ]
status = tx_thread_suspend (&some_thread);
→ status = tx_thread_terminate (&some_thread);