본문 바로가기

c언어

크리티컬 섹션, 뮤텍스, 세마포어 차이점 1. 크리티컬 섹션 유저 객체입니다. 커널에서 제공되는 객체가 아니라는 말입니다.커널 객체가 아니므로 가볍고 빠릅니다.그러나 한 프로세스 내의 쓰레드 사이에서만 동기화가 가능합니다.보통의 경우 가볍고 쉽게 쓸 수 있는 동기화 객체입니다. 2. 뮤텍스크리티컬 섹션과 다르게 커널 객체입니다.그러므로 크리티컬 섹션보다 무겁습니다.크리티컬 섹션이 한 프로세스 내의 쓰레드 사이에서만 동기화가 가능한 반면,뮤텍스는 여러 프로세스의 스레드 사이에서 동기화가 가능합니다.뮤텍스를 가장 흔히 사용하는 예가 프로세스 다중 실행을 막을 때입니다.이런 기능은 크리티컬 섹션으로는 불가능합니다. 3. 세마포어세마포어 역시 커널 객체입니다.위의 크리티컬 섹션, 뮤텍스는 동기화 함에 있어서 동시에 하나의 쓰레드만실행되게 합니다.이에 .. 더보기
wait함수 #include pid_t wait(int *stat_loc); wait 함수의 인자인 int *stat_loc 는 자식 프로세스가 종료될 때의 상태 정보를 나타낸다. 반환값 pid_t 는 자식프로세스의 프로세스 번호가 리턴된다.부모 프로세스는 0을 리턴받는다 반환값 성공 : 자식 프로세스의 pid, 부모 프로세스는 0 반환 실패 : -1[출처] [8] 프로세스 동기화, 속성, 환경변수|작성자 발업달팽이 더보기
포인터와 배열과의 관계 int a[3] int a[0] ~ int a[3]a[]은 각각 int형으로 볼 수 있다 int*는 int형의 주소값을 저장할 수 있는 형이다 int* b = aa는 a[0]의 주소와 같음 int형 주소값을 저장하는 b에는 a[0]의 주소가 저장되어진다 더보기
printf(%.*s) sprintf ( szQuery, "SELECT * FROM USER_INFO WHERE szUserID = '%.*s'", SZ_ID, szUserID ).을 찍고 *를 하면 해당 인자의 값을 취해서 그만큼만 데이터 길이를 짤라서 취합니다. 문자열배열 szUserID[]에서 SZ_ID만큼 잘라서 사용함 더보기
typedef char str[30] typedef char str[30];str string; 위 코드는 다음과 같습니다. char string[30]; 더보기
배열 1차원 배열 int a[] = {1, 2, 3, 4}; 2차원 배열 int a[][] = { {1,2,3,4}, {1,2,3,4}, {1,2,3,4} }; 3차원 배열 int a[][][] = { { {1,2,3,4}, {1,2,3,4}, }, { {1,2,3,4}, {1,2,3,4} } } 1차원 설명 {1,2,3,4} {}은 배열의 시작과 끝을 의미함 3차원 설명 { { {1,2,3,4}, {1,2,3,4}, }, { {1,2,3,4}, {1,2,3,4} } } {}은 배열의 시작과 끝을 의미함 {}은 a[][][]의 첫번째[]을 의미함 {}은 a[][][]의 두번째[]을 의미함 숫자의 순서는 a[][][]의 세번째[]을 의미함 {1,2,3,4}에서 1은 1번째, 2는 2번째, 3은 3번째, 4는 4.. 더보기
c언어 생각 더보기
scanf함수에서 \n을 사용하면? http://msdn.microsoft.com/ko-kr/library/vstudio/kwwtf9ch(v=vs.100).aspx White-space characters: blank (' '); tab ('\t'); or newline ('\n'). A white-space character causes scanf to read, but not store, all consecutive white-space characters in the input up to the next non–white-space character. scanf("\n"); 띄어쓰기 들여쓰기 한칸넘기기를 함수 안에 사용하면 입력으로 띄어쓰기 들여쓰기 한칸넘기기를 읽어 들이기는 하지만 저장은 하지 않음 더보기