Replies: 15 comments 7 replies
-
감상평: |
Beta Was this translation helpful? Give feedback.
-
느낀점2장을 읽으면서 1장과 함께 복습했다. cpu는 하나의 일만 할수 있는데 어떻게 동시에 실행되는것처럼 보이는가? 에 대해 자세히 관심을 가져본적이 없다. 전환 빈도를 빠르게 만들어 동시에 실행되는것처럼 보이게 한다. 그와 동시에 동시성, 병령성에 대해서 정확하게 인지할수 있는 계기가 되었다. 운영체제는 코드의 재사용의 끝판왕. 운영체제가 존재함으로써 pc의 내부 구현 정확하게 알지 못해도 컴퓨터를 편리하게 사용할수 있구나. 자바스크립트로 개발하는 개발자가 코루틴을 이해하기 위해서는 async await, 프로미스, 제너레이터에 대입해서 공부해도 되는 걸까? 하는 고민이 들었다. 책을 읽은 후에 블로그 글을 좀 더 찾아보았다. https://charming-kyu.tistory.com/58 [https://velog.io/@rohkorea86/Generator-함수를-이해해보자-이론편-왜-제네레이터-함수를-써야-하는가](https://velog.io/@rohkorea86/Generator-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-%EC%9D%B4%EB%A1%A0%ED%8E%B8-%EC%99%9C-%EC%A0%9C%EB%84%A4%EB%A0%88%EC%9D%B4%ED%84%B0-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80) |
Beta Was this translation helpful? Give feedback.
-
프로세스와 스레드, mutual exclusion 등에 대해서 면접대비하면서 달달 외울 때에는 몰랐던, 실제 동작원리를 알게 되니 신기했다. 특히 왜 스레드에서 스택 영역은 각각 가지고 있는 그림으로 표현했는지 3년만에 이제야 깨우쳤다..ㅎ.. 모르면 마법 알면 기술인 컴퓨터의 세계가 나에게 점점 마법의 영역에서 기술의 영역으로 이동하는 듯... 나도 이 책의 친절하면서도 딥다이브한 설명 and 번역에 감동을 받고 있다. 읽기라도 끝까지 하려다 보니 정리는 중간에 포기했지만 복습하면서 꼭 하겠다... 시간에 쫓겨 급하게 하지말고 조금 더 천천히 정독하면 참 좋을 것을^^.. |
Beta Was this translation helpful? Give feedback.
-
감상평
나누고 싶은 이야기2.1장
2.2장
2.3장
2.4장
|
Beta Was this translation helpful? Give feedback.
-
감상평
GPT 답변 : JavaScript의 제너레이터는 코루틴의 일부분을 구현한 것으로 볼 수 있습니다. 제너레이터는 일시 중단과 재개를 지원하며, 이는 코루틴의 중요한 특성 중 하나입니다. 그러나 제너레이터는 코루틴의 완전한 기능을 제공하지 않으며, 주로 단방향 제어 흐름을 지원합니다. |
Beta Was this translation helpful? Give feedback.
-
감상평 요번 챕터를 읽으면서는 예전에 대학교 때 살짝 발 뒤꿈치정도 담궈봤던 유니티가 떠올랐더랬죠.. 그렇다고 무턱대고 오브젝트 풀링을 막 사용한다기 보다는, 코루틴도 마찬가지로 유니티에서 처음 배웠던 개념이었더랬죠.. 많은 분들이 얘기해주셨다시피.. 저도 제너레이터가 바로 떠오를 수밖에 없었는데요.. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Thread safe 하면서 성능도 챙기는 프로그램을 만들기 위한 고민은 계속되어 왔지만, 구현체 레벨에서 생각해 왔었는데 좀 더 로우 레벨을 훑어 볼 수 있어 좋았다. 코루틴을 늘 공부해야지 생각만 하고 있었는데 전체적인 개념을 익힐 수 있어 좋았다. |
Beta Was this translation helpful? Give feedback.
-
by GPT 이러한 스레드 로컬 저장소는 스레드가 생성될 때 할당되며, 스레드가 종료될 때까지 유지됩니다. 따라서, 스레드가 해당 변수를 사용하지 않더라도 메모리 공간이 할당되고 존재하게 됩니다. 여기에 대한 근거자료는 다음과 같습니다:
다음은 이러한 내용을 참고할 수 있는 몇 가지 자료들입니다: 이러한 자료들을 통해,
TLS의 주요 장점 중 하나는 여러 스레드가 동시에 실행되더라도 각 스레드가 자신의 데이터를 안전하게 보관할 수 있다는 거야. 즉, 스레드가 종료되거나 명시적으로 초기화하기 전까지는 TLS에 저장된 데이터가 유지돼. 스레드가 종료되는 시점은 언제야? 스레드 함수가 종료될 때: 스레드가 수행할 작업을 정의한 함수가 반환될 때 스레드는 종료돼. 예를 들어, pthread_create로 생성된 스레드가 start_routine 함수를 실행하고 이 함수가 반환되면 스레드는 종료돼. 스레드가 명시적으로 종료될 때: 스레드가 pthread_exit 같은 함수를 호출하여 명시적으로 자신을 종료할 때. 이 경우, 스레드는 즉시 종료돼. 프로세스가 종료될 때: 프로세스가 종료되면 해당 프로세스에 속한 모든 스레드도 함께 종료돼. 이는 exit 함수가 호출되거나 프로세스가 어떤 이유로든 종료될 때 발생해. 다른 스레드에 의해 종료될 때: 다른 스레드가 pthread_cancel 같은 함수를 호출하여 특정 스레드를 종료시킬 수 있어. 이 경우, 대상 스레드는 종료돼. 이와 같은 시점에 스레드는 종료되며, 이때 TLS에 저장된 데이터는 더 이상 유효하지 않게 돼. 스레드가 종료되면 TLS의 자원도 해제돼. |
Beta Was this translation helpful? Give feedback.
-
@sa02045 님의 2장 퀴이즈 |
Beta Was this translation helpful? Give feedback.
-
Mutex
뮤텍스의 기본 개념 잠금(Lock)과 해제(Unlock): 뮤텍스는 두 가지 주요 동작을 제공해: 잠금(Lock): 스레드가 자원에 접근하기 전에 뮤텍스를 잠가 다른 스레드가 접근하지 못하게 해. 자물쇠를 잠그는 것과 비슷해. 첫 번째 사람이 출금을 시도할 때 뮤텍스를 잠금. 요약
뮤텍스의 정의 및 목적 주요 기능 초기화: 뮤텍스를 사용하기 전에 초기화해야 해. POSIX 스레드의 경우 pthread_mutex_init 함수를 사용해 초기화할 수 있어. #include <pthread.h>
#include <stdio.h>
pthread_mutex_t mutex;
int shared_data = 0;
void* thread_function(void* arg) {
pthread_mutex_lock(&mutex); // 뮤텍스 잠금
shared_data++; // 임계 구역
printf("Shared Data: %d\n", shared_data);
pthread_mutex_unlock(&mutex); // 뮤텍스 해제
return NULL;
}
int main() {
pthread_t threads[10];
pthread_mutex_init(&mutex, NULL); // 뮤텍스 초기화
for (int i = 0; i < 10; i++) {
pthread_create(&threads[i], NULL, thread_function, NULL);
}
for (int i = 0; i < 10; i++) {
pthread_join(threads[i], NULL);
}
pthread_mutex_destroy(&mutex); // 뮤텍스 소멸
return 0;
} 이 예제에서는 10개의 스레드가 shared_data 변수를 증가시키는 작업을 수행해. pthread_mutex_lock과 pthread_mutex_unlock을 사용해 뮤텍스를 잠그고 해제함으로써, 동시에 여러 스레드가 shared_data에 접근하는 것을 방지해. 중요한 고려 사항 |
Beta Was this translation helpful? Give feedback.
-
That is, since generators are primarily used to simplify the writing of iterators, the yield statement in a generator does not specify a coroutine to jump to, but rather passes a value back to a parent routine. |
Beta Was this translation helpful? Give feedback.
-
감상평을 남겨주세요~!
6/22 11시 전까지!
Beta Was this translation helpful? Give feedback.
All reactions