Tip:
Highlight text to annotate it
X
[Powered by Google Translate] NATE HARDISON : 당신이 가진 때 여러 프로그램에서 열
컴퓨터가 모든 걸 듯
동시에 실행할 수 있습니다.
예를 들어, 같은 웹 브라우저에서 작동 될 수 있습니다
Firefox 또는 Internet Explorer, 아이튠즈에서 음악을 듣고,
와 Word로 에세이를 쓰고 싶어요.
그러나, 후드, 프로그램 실제로
한 번에 하나의를 실행합니다.
그것은 윈도우, 맥 OSX 운영 체제의 일이다, 또는
리눅스는 등이 별도의 프로세스의 각을 관리하는
프로그램은 알려진, 그래서 그들 사이에 전환됩니다 때
귀하의 에세이 작업에 페이스 북 페이지를 통해 확인부터 시작
다시 Word가 실행중인 것입니다.
>> 가끔하지만, 우리는 스스로 할 수 있다면 프로그램을 원하는
도, 이렇게 여러 일을합니다.
당신이 나 같은 경우, 당신은 아마의 무리가
다른 탭 웹 브라우저, 이메일 하나에 열
달력과 하나 등.
우리는 별도의 프로그램이나 과정으로 각 탭을 취급 할 수
같은 Google 크롬은 않습니다하지만 많은 프로그램을 사용하여
프로세스의 가벼운 무게 버전은 스레드를했다.
>> 스레드 처리 중 또 다른 단위의 집합입니다
지시 또는 "실행"할 수 있습니다 코드, 견적 인용을 끝 맺다,
동시에 다른 스레드가 있습니다.
이렇게하면 당신은 페이스 북을 탐색 할 수있게 무엇
배경 내 말 듣고 또는 두 개의 할 동안
YouTube 동영상을 동시에 재생.
따라서 동시성로 알려진이 일반적인 주제는, 일반적으로
이렇게 일찍 컴퓨터 과학 과정에 와서하지 않습니다
낮은 수준의 세부 사항의 검토를 필요로하기 때문에
운영 체제 및 같은.
그러나, 프로그래밍 언어, 우리가에서 사용
CS50의 시작, 스크래치에 몇 가지 멋진 도구를 제공합니다
쉽게 여러 가지로 프로그램을 작성 할 수 있도록
한 번에 일.
>> 당신은 스크래치 프로그램을 빌드 할 때, 당신은 끊임없이
스레드로 작업.
각 스크래치 스크립트가되는데,이로 시작하는 코드 블록입니다
"때"퍼즐 조각 중 하나는 생각 할 수 있습니다
별도의 스레드 있습니다.
가 어떻게 작품을 볼 수있는 간단한 스크래치 프로그램을 살펴 보도록하겠습니다.
>> 여기, 우리는 두 개의 스크립트, 물고기 개체, 또는 요정이 있어요
모두 시작은 작은 녹색 깃발 버튼을 클릭 할 때하는.
첫 번째 스크립트는 물고기의 움직임을 제어합니다.
녹색 깃발을 클릭하면 물고기가 배치됩니다
화면의 왼쪽에, 무대라고
오른쪽에 마주보고 있습니다.
그런 다음 영원히 실행됩니다 지침의 집합에 때까지
프로그램을 중단 물고기가 오른쪽으로 미끄러지 듯 올라
, 돌아 서서 왼쪽으로 돌아갑니다, 그리고
다시 주위를집니다.
두 번째 스크립트는 물고기의 생각 프로세스를 제어합니다.
그것은이 배고픈 물고기입니다 밝혀졌다.
따라서 3 초 동안 대기 한 후, 물고기는 생각합니다
사분의 일 초에 "나 배고파 ...".
이 스크립트는 영원히 실행됩니다.
그리고 우리는를 클릭하여 프로그램을 실행을 참조로
녹색 깃발은 모두 스크립트가 실행 표시
동시에.
물고기는 같은 시간에 이동하고 생각합니다.
>> 가난한 물고기가 너무 배고파서 보이는 이래의 일부에 추가 할 수 있도록
가 먹을 썰렁 퍼프.
그러 셨음 좋겠네요 물에 분해되지 않습니다.
우리가 두 번째 스프라이트에 추가 할 때, 우리는 할 수 있습니다
그 요정에 해당하는 스크립트에 추가합니다.
그리고 따라서, 또 다른이있을거야
게재합니다 스레드.
프로그램 제어를 사용자에게 이상을 제공하기 때
배고픈 물고기 음식을 도착, 그럼 그런 말을 할 때마다 공간
막대가 부딛 치즈 퍼프는을 위해 무대에 표시
물고기가 먹을 수 있습니다.
우리가 스페이스 바를 누르하기 전에, 우리는 치즈를 유지하는 것이 좋습니다
물고기를 볼 수 있도록 퍼프가 숨겨져.
이 작업을 수행하기 위해, 우리는을위한 스크립트의 몇 가지가 필요합니다
느끼한 퍼프 요정.
첫 번째 스크립트, 녹색 깃발, 그냥 음식을 숨겨 것입니다.
우리가 작성한 다른 스크립트와는 달리,이 하나는 유지되지 않습니다
영원히 실행할 수 있습니다.
우리가 마우스 오른쪽 때 시작하고 매우 빨리 완료된다
녹색 깃발 버튼을 클릭합니다.
>> 스페이스 바는 될 수 있도록 우리가 가진 다음 스크립트 기다리 겠소
실행하기 전에 누르면.
우리는 사용자 입력에 대해 "대기"또는 "듣기"를 기다리고 호출 할 수 있습니다
이벤트에 대한.
그리고 이벤트가 또는 수신 할 때 실행 코드
들었다는 이벤트 처리 코드라고합니다.
우리 스페이스 바 이벤트 핸들러에 치즈 퍼프를 표시합니다
화면 그래서 물고기를 먹을 수 있는지 확인하십시오.
이 시점에서, 모든 좋은 찾고있어.
>> 우리가해야 할 다음 일은 얻는 방법을 알아 내기 위해서입니다
물고기는 먹을 수있는 식품이 있다고한다는 것을.
씨가 지속적으로 물고기에 다른 스레드를 추가 할 수 있도록
이 치즈 퍼프를 만지고 있어요 여부를 확인합니다.
우리가 할 수있는 그런 식으로부터 별도의 스레드에서이 작업을 수행
끊임없이 음식을 확인합니다.
그렇지 않으면, 우리는 정기적으로 음식을 확인 할 수있을
글라이딩 사이에,, 선회 대기, 또는 생각.
>> OK.
지금이 우리의 스크래치 프로그램을 실행할 수 있습니다.
예상대로, 음식은 즉시 숨 깁니다과
배고픈 물고기는 다시 아무것도 갔다 직전 좋아요.
우리가 스페이스 바를 누르면 치즈 퍼프는 볼 수 있다네
그리고 배고픈 물고기는 우를 말합니다.
그러나 이상 해요, 잠깐만 요.
물고기의 생각 인터럽트를 "나는 배가에게"야 어째서
다른 것들은?
우리가 어떤 조정을 구축하지 않았기 때문에입니다
세 생선 스크립트 사이에 있습니다.
각 무엇을 잊기 자체 스레드에서 실행되고있는
다른 다하고 있습니다.
우리가 이동하기 전에의이 문제를 해결 보자.
>> 스레드 사이의 조정은 우리부터 복잡한 작업입니다
명시 적으로 각 스레드가 실행될 때 제어하거나이 없습니다
실행되지 않습니다.
하나의 스레드에서 다른 메시지를 보내려면, 우리는 필요합니다
하나의 스레드에서, 우리가 설정하거나 작성할 수있는 변수를 사용
그리고 다른에서 읽어보십시오.
하자 우리가 설정할 수라는 변수 foodFound을 만들
사실 생선 치즈 퍼프로 실행될 때.
물론, 우리는로 설정되었는지 확인하려면
처음에 false를 반환합니다.
그런 다음 물고기의 사고 스레드에, 우리는 확인 준다면
물고기는 "배고프다"를 표시하기 전에 음식을 발견했습니다
풍선을 생각.
>> 이제 프로그램을 실행하면 다시 한 번, 우리가 볼 수있는 물고기
기아의 생각을 방해하지 않을 때
느끼한 퍼프 아웃입니다.
우리가 마지막 문제는 치즈 퍼프는 가지 마세요 것입니다
거리에 물고기 후, 인용을 끝 맺다 말을 인용, 그들은 "먹고".
물고기 스크립트에서 치즈가 몸을 숨길만한 쉬운 방법은 없습니다
퍼프, 그래서 우리는 치즈 퍼프에 메시지를 보내 주셔야합니다
자체를 숨길 요정.
우리는 다른 변수와 함께이 작업을 수행 수 썰렁 퍼프
스프라이트에 접근뿐만 아니라 생선 요정이 있습니다.
>> 그러나,이 경우에는이 작업을 수행 할 수있는 청소기 방법은이
대신입니다 스크립트로 메시지를 보내는 이후
어딘가 실행의 중간에, 우리는을 보낼 수 있습니다
시작 기다리고있어 스크립트 메시지가 나타납니다.
우리는 생선을 갖는하여이 작업을 수행 할 우리는 버릴 이벤트를 방송
먹을 전화하십시오.
그런 다음, 우리는 의지 치즈 퍼프에 대한 스크립트를 생성됩니다
이 이벤트 기다립니다.
이것은이 제외 스페이스 바 이벤트와 비슷합니다
때, 사용자가 직접 이벤트를 실행 한 없습니다.
이제 우리가해야 할 일은 우리의 foodFound 변수 등이 설정되어
false로, 우리는 지금 많은 배고픈 물고기를 줄 수
가 원하는대로 치즈 퍼프의 인분.
>> 그러니 너무 나쁘지 않은데, 그렇죠?
C에서 멀티 스레드 프로그램을 작성하는 것은 더 복잡합니다
하지만 기본은 동일합니다.
어쨌든, 난 당신이 재미를 구축하는 좋은 시간을 기대
스크래치에 동시 프로그램.
내 이름은 네이트 Hardison입니다.
이 CS50입니다.