<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=GnuSmalltalkUsersGuide%3ABaseChapter_146</id>
	<title>GnuSmalltalkUsersGuide:BaseChapter 146 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=GnuSmalltalkUsersGuide%3ABaseChapter_146"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_146&amp;action=history"/>
	<updated>2026-05-01T15:50:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_146&amp;diff=4134&amp;oldid=prev</id>
		<title>Onionmixer: GSUG Semaphore 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_146&amp;diff=4134&amp;oldid=prev"/>
		<updated>2014-01-28T05:55:57Z</updated>

		<summary type="html">&lt;p&gt;GSUG Semaphore 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;Semaphore&lt;br /&gt;
&lt;br /&gt;
==Semaphore==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;네임스페이스 Smalltalk에 정의됨&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;슈퍼클래스: LinkedList&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;범주: 언어-프로세스&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:나의 인스턴스들은 계수하는 세마포어(counting semaphore)를 나타낸다. 나는 세마포어의 가용성을 시그널링할 수 있는 메서드와, 가용성을 기다리기 위한 메서드를 제공한다. 뿐만 아니라 임계 영역을 구현하기 위한 메서드도 몇 가지 제공한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaphore 클래스: 인스턴스 생성===&lt;br /&gt;
&lt;br /&gt;
====forMutualExclusion====&lt;br /&gt;
&lt;br /&gt;
위에 시그널이 있는 새 세마포어를 응답하라. 이러한 세마포어는 세마포어를 임계 영역으로 사용할 때 유용한 지름길이 된다.&lt;br /&gt;
&lt;br /&gt;
====new====&lt;br /&gt;
&lt;br /&gt;
새 세마포어를 응답하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaphore: 접근하기===&lt;br /&gt;
&lt;br /&gt;
====name====&lt;br /&gt;
&lt;br /&gt;
수신자를 위해 사용자 친화적인 이름을 응답하라.&lt;br /&gt;
&lt;br /&gt;
====name: aString====&lt;br /&gt;
&lt;br /&gt;
수신자를 위해 사용자 친화적인 이름을 응답하라.&lt;br /&gt;
&lt;br /&gt;
====waitingProcesses====&lt;br /&gt;
&lt;br /&gt;
현재 수신자에게서 대기 중인 프로세스의 Array를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====wouldBlock====&lt;br /&gt;
&lt;br /&gt;
수신자에게서 대기가 현재 프로세스를 중지시킬 것인지 응답하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaphore: builtins===&lt;br /&gt;
&lt;br /&gt;
====lock====&lt;br /&gt;
&lt;br /&gt;
수신자를 sleep 상태로 놓지 않고 세마포어에서 대기를 시도하는 프로세스를 강제로 막아라. 이전에도 그런 경우가 있었는지 응답하라.&lt;br /&gt;
&lt;br /&gt;
====notify====&lt;br /&gt;
&lt;br /&gt;
세마포어에서 대기 중이던 프로세스가 있을 경우 그 중 하나를 재개하라. 어떤 프로세스도 대기하고 있지 않은 경우 세마포어에 시그널을 남기지 말라.&lt;br /&gt;
&lt;br /&gt;
====notifyAll====&lt;br /&gt;
&lt;br /&gt;
세마포어에서 대기 중이던 프로세스가 있을 경우 모두 재개하라. 어떤 프로세스도 대기하고 있지 않은 경우 세마포어에 시그널을 남기지 말라.&lt;br /&gt;
&lt;br /&gt;
====signal====&lt;br /&gt;
&lt;br /&gt;
수신자를 시그널링하고 대기 중인 프로세스가 있다면 재개하라.&lt;br /&gt;
&lt;br /&gt;
====wait====&lt;br /&gt;
&lt;br /&gt;
수신자가 시그널링될 때까지 대기하고, 아직 없다면 실행 중인 프로세스를 중지하라.&lt;br /&gt;
&lt;br /&gt;
====waitAfterSignalling: aSemaphore====&lt;br /&gt;
&lt;br /&gt;
aSemaphore에게 시그널링 후 수신자가 시그널링될 때까지 대기하며, 아직 실행 프로세스가 중지되지 않은 경우 중지시켜라. 수신자에게서 대기하기 전에 #notify와 #notifyAll이 사용될 경우 경합 조건을 피하는 데에 필요하다: 아니면 aSemaphore이 시그널링되는 시간과 프로세스가 수신자를 대기하기 시작하는 시간 중 하나라도 프로세스가 전송할 경우 알림(nofication)이 손실된다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaphore: 상호 배제===&lt;br /&gt;
&lt;br /&gt;
====critical: aBlock====&lt;br /&gt;
&lt;br /&gt;
수신자가 해제될 때까지 기다리고 aBlock을 실행한 후 수신자를 다시 시그널링하라. aBlock을 평가한 결과를 리턴하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaphore: 인쇄하기===&lt;br /&gt;
&lt;br /&gt;
====printOn: aStream====&lt;br /&gt;
&lt;br /&gt;
사람이 읽을 수 있는 수신자의 표현을 aStream 상에 인쇄하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GnuSmalltalkUsersGuide]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>