Computer Science

세마포어란?🌼 동기화 기법 🌼세마포어는 락과 컨디션 변수로 모두 사용할 수 있다. 정수값을 갖는 객체로서 두 개의 루틴으로 조작가능(초기화 포함은 3개)세마포어는 초기값에 의해 동작이 결정된다. ➡️ 사용하기 전에 제일 먼저 값을 초기화 해야함 POSIX semaphores- int sem_init(sem_t *s, int pshared, unsigned int value)  두번째 인자는 모든 예제에서 0이다. ➡️ 이 값은 같은 프로세스 내의 쓰레드 간에 세마포어를 공유한다는 것을 의미  0이 아니라면 세마포어는 프로세스 간에 공유되며, 공유 메모리 영역에 위치해야 한다.- int sem_wait(sem_t *s)  세마포어 값이 1이상이면 함수는 즉시 리턴, 아니면 값이 1이상이 될 때까지 호출..
조건을 기다리는 방법어떤 조건이 참이 되기 전까지 스레드가 대기하는 것이 필요하다.물론 조건이 참이 될 때까지 단순히 반복할 수 있지만 ⇒ CPU 사이클을 낭비volatile int done = 0;void *child(void *arg) { printf("child\\n"); done = 1; return NULL;}int main(int argc, char *argv[]) { pthread_t c; printf("parent: begin\\n"); pthread_create(&c, NULL, child, NULL); // create child while (done == 0); // 회전 printf("parent: end\\n"); return 0;}..
진짜 어렵다... 밑에 있는 책을 꼭 읽어보길 추천...책이 정말 잘 설명해준다.. 근데 난 이해 못하겠다..ㅎㅎ자료구조에 락을 추가하는 방법?자료구조에 락을 추가하여 thread safe하게 만들 수 있따.  Correctness : 어떻게 락을 추가하고 올바르게 추가하려면 어떻게 해야할까?  Concurrency : 데이터 구조가 높은 성능을 제공하고, 많은 스레드가 동시에 구조에 접근할 수 있도록 잠금을 추가하는 방법은 무엇인가?Simple Counter (Without Locks)typedef struct __counter_t {int value;} counter_t;void init(counter_t *c) {c->value = 0;}void increment(counter_t *c) {c->v..
락: 기본 개념balance = balance + 1;lock_t mutex; // 글로벌 변수로 선언된 락 …lock(&mutex);balance = balance + 1;unlock(&mutex);소스 코드의 임계 영역을 락으로 둘러서 그 임계 영역이 마치 하나의 원자 단위 명령인 것 처럼 실행되도록 한다. [ 락의 상태 ]사용가능( available, (unlocked or free)): 어느 쓰레드도 락을 갖고 있지 않는 것사용중(acquired) : 즉, 임계 영역에서 정확히 하나의 쓰레드가 락을 획득한 상태lock()호출을 통해 락 획득을 시도한다.만약 어떤 쓰레드도 락을 갖고 있지 않으면, 그 쓰레드는 락을 획득하여 임계영역 내로 진입⇒ 진입한 쓰레드 : 락의 소유자(owner)다른 스레드는..
1. HTTP?HTTP는 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.클라이언트가 서버에게 요청을 보내면, 서버는 응답을 보냄으로써 데이터를 교환한다.HTTP의 특징비연결성, 무상태성HTTP는 요청 처리 후 연결을 끊어버린다.(비연결성) 이때문에 클라이언트의 상태 정보 및 현재 통신 상태가 남아있지 않다.(무상태성)장점 : 서버의 자원 낭비를 줄일 수 있다.단점 : 남아있지 않아, 클라이언트를 식별할 수 없다. 이렇게 된다면 우리가 로그인을 한 뒤에도 새로고침을 할 때마다 로그아웃이 되어 무한 로그인을 해야할 것 이다. 이런 문제를 해결하기 위해서 Cookie와 Session 을 사용한다.2. Cookie웹사이트에 접속을 했을 때, 브라우저 안에 저장되는 아주 작은 ..
unemployedMan
'Computer Science' 카테고리의 글 목록 (2 Page)