테스트용
비록 올바른 사용 예는 아닐 수 있지만 사용법 숙달을 위해..

#include <stdio.h>
#include <windows.h>
#include <process.h>

// 쓰레드 함수
void threadTest1(void* param);
void threadTest2(void* param);

// 계산 함수
void cal(int num);

// 테스트 숫자
static int maxCnt = 20;

// 계산 결과를 저장
static int result = 0;

// Critical section Variable
CRITICAL_SECTION cs;

// 메인 함수
int main(void)
{
	// 초기화
	InitializeCriticalSection(&cs);

	int i;
	for(i = 0; i < 5; i++)
	{
		// 변수 초기화
		result = 0;

		// 쓰레드 시작
		HANDLE handles[2];
		handles[0] = (HANDLE)_beginthread(threadTest1, 0, NULL);
		handles[1] = (HANDLE)_beginthread(threadTest2, 0, NULL);

		// 쓰레드가 모두 종료될 때까지 대기
		WaitForMultipleObjects(2, handles, TRUE, INFINITE);

		// 결과 출력
		printf("계산 결과: %d\n", result);
	}

	return 0;
}

// 쓰레드 함수 구현
void threadTest1(void* param)
{
	int loopcnt = 0;

	do
	{
		cal(1);
		Sleep(1);
	} while(maxCnt > ++loopcnt);

	_endthread();
}

void threadTest2(void* param)
{
	int loopcnt = 0;

	do
	{
		cal(2);
		Sleep(1);
	} while(maxCnt > ++loopcnt);

	_endthread();
}

// 계산 함수
void cal(int num)
{
	int tmp = 0;

	EnterCriticalSection(&cs);

	// 연산
	tmp = result;
	tmp += num;
	Sleep(1);	// 일부러 Context switching 해버릴 수도 있도록
	result = tmp;

	LeaveCriticalSection(&cs);
}

'프로그래밍 > C & C++' 카테고리의 다른 글

[C/VC] 간단한 Critical Section 테스트  (0) 2011.03.06
struct 선언과 typedef  (0) 2007.03.31

표준 입출력인 콘솔을 통한 입출력을 알아본다.

1. 콘솔 입력

기존 2.x대 파이썬에서는 raw_input()함수를 통해 콘솔 입력을 받았지만 3.x에서는 input()함수를 통해 입력받을 수 있다. input()함수의 파라미터로 텍스트를 입력하면 해당 텍스트를 출력하면서 콘솔을 통해 입력을 받을 수 있다.
>>> birthday = input("생일 입력 ")
생일 입력 1999.01.01
>>> birthday
'1999.01.01'

2. 콘솔 출력

다른 포스트에서 처럼 print()함수를 이용하여 기본 출력을 한다.
>>> print(birthday)
1999.01.01

print()함수와 ,를 이용하여 다음과 같이 출력할 수도 있다.
,가 들어가면 공백으로 출력된다.
>>> print(a, b, c, d)
1 2 3 4

'프로그래밍 > Python' 카테고리의 다른 글

콘솔 입출력  (0) 2011.03.06
기초문  (0) 2011.03.05
변수명  (0) 2011.03.05
Python 기본  (0) 2011.03.05

1. 주석

주석은 #으로 한줄에 대한 주석을 할 수 있다.
C/C++나 Java에서 //와 같이 주석을 달 수 있다.
>>> print('test 입니다') #테스트입니다
test 입니다

2. 라인 변경

하나의 라인이 너무 길어 줄 바꿈을 하고자 할 때 다른 언어와 같이 \를 사용할 수 있다.
print('test \
입니다')
test 입니다

3. 치환과 참/거짓

이미 컴퓨터 프로그래밍을 경험한 사람이라면 =는 같다는 의미보다 치환의 의미를 갖는다는 것을 알 것이다.
파이썬에서도 =는 치환이다.
참 거짓 판단을 위해서는 Java와 같이 == 혹은 !=를 사용할 수 있다.
>>> a = 1
>>> print(a)
1
>>> 1 == 1
True
>>> 1 == 2
False
>>> 1 != 2
True

4. 확장 치환

치환을 반복해서 수행할 수 있다.
혹은 순서대로 치환할 수 있다.
>>> a = b = c = 1
>>> print(a,b,c)
1 1 1
>>> a, b = 1, 2
>>> print(a,b)
1 2

'프로그래밍 > Python' 카테고리의 다른 글

콘솔 입출력  (0) 2011.03.06
기초문  (0) 2011.03.05
변수명  (0) 2011.03.05
Python 기본  (0) 2011.03.05

일반적인 언어의 변수 명명 방법과 차이를 보이지는 않는다.
다른 언어도 마찬가지로 예약어는 사용할 수가 없는데 다음과 같이 예약어를 확인할 수 있다.
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> len(keyword.kwlist)
33

예약어에 assign 하려 한다면 다음과 같은 오류를 볼 수 있다.
>>> False = '1'
SyntaxError: assignment to keyword
>>> False = a
SyntaxError: assignment to keyword
>>> False = 1
SyntaxError: assignment to keyword

단, 조심할 것이 있는데 내장 함수 이름을 모르고 변수명으로 이용하게 되면 해당 내장 함수를 사용할 수 없게 된다.
>>> str(123)
'123'
>>> str = 'test'
>>> str(123)
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    str(123)
TypeError: 'str' object is not callable

'프로그래밍 > Python' 카테고리의 다른 글

콘솔 입출력  (0) 2011.03.06
기초문  (0) 2011.03.05
변수명  (0) 2011.03.05
Python 기본  (0) 2011.03.05

많은 분들이 해당 키워드로 이곳에 오고 계십니다.
시내버스 시간표를 더 이상 업데이트 하지 않습니다.
시간표를 구하시려면 이전 많은 포스트에 적어 두었듯이


이곳에서 확인하실 수 있습니다.

시간표와는 거리가 다소 거리가 멀지만 실시간으로 버스가 언제 올 수 있는지 알 수 있는 앱을 소개합니다.
안드로이드 스마트폰 사용자의 경우 두가지의 앱이 있습니다.

대전버스
https://market.android.com/details?id=com.djbus

전국버스-가장 많은 지역을 지원하는 버스 앱
https://market.android.com/details?id=net.hyeongkyu.android.incheonBus

현재 2개의 앱이 있는 것으로 확인하였습니다.
이러한 앱들을 사용하셔도 좋을 것이라 생각합니다.

+ Recent posts