function writeData() {
count = count(this->data);
for(x = 0; x < count; x++) {
[path, content] = this->data[x];
// 잠깐 이 코루틴 멈추고(Yield) 다른 코루틴 일시키기
@#!@#!@# // 대충 파일 i/o 작업
}
// 다른 코루틴이 끼어들어 this->data를 수정한 상태에서 통째로 날림
this->data = 0;
}
동시성 버그 터질거 아님?
기존 스레드에서는 os 스레드 1:1 로 대응되서 그렇게 막 접근할일없었는데 가상스레드는 아니잖음?
그러니까 자꾸 불변성거리면서 함수형으로 가려고하지 상태를 가지는 클래스 아웃
본문에 코드가 자바 코드 맞음?? 동기화 잘 시켜주면 괜찮지 않을까?
자바 코드는 아니고 대충 클래스 의사코드 ㅇㅇ... 아 php 가 메모리랑 동시성문제 싹다 잊어버릴수있게 해놔서 저런거 생각안하고있다가 다른데 보니까 어지러워ㅠ
@피치(183.101) php - 일단 재시작 함으로서 변수 메모리, 자원관리를 신경안씀 모든게 동기 - 동시성 문제 신경안써도됨
@피치(183.101) shared nothing , stateless ㄹㅇ
@피치(183.101) 나도 코루틴은 모르지만 스레딩은 첨엔 복잡한데 하다보면 조금씩 머릿속에 정리가 됨. 내 경우는 그냥 맨땅에 헤딩이 젤 이해하기에 효과적이었던듯 ㅇㅅㅇ
@피치(183.101) 솔직히 상업적으로 만들땐 신경을 안써도 되는게 많을수록 좋은듯
@카이런프랙터 요즘 php vm 마니는 유럽아조씨들하고 디코하면서 배우는중 ㅠ async,await 극혐했는데 다 인체공학적인거더라 ㅠ eslint 옵션도 되게 다양함 루프안에 await 금지, 원자적 실행 어쩌고
@카이런프랙터 그러면서 php 에 비동기 넣는거 되게 조심스러워함 이렇게 신경안써도 되는 세상에서 갑자기 모든걸 신경써야되는거로 바뀌니까 코드고 사람이고 다 난리난다는
@피치(183.101) 자바스크립트/타입스크립트 eslint no-await-in-loop,require-atomic-updates, @typescript-eslint/no-floating-promises, @typescript-eslint/no-misused-promises 대충 이렇게 있고 문서에 동시성버그관련 예제 자세히나와서 보다가 어지러움
@피치(183.101) php랑 비슷한 용도인 js가 가진 기능들을 따라가는게 아닐까 싶기도 하고
@카이런프랙터 사람들이 비동기만 넣으면 빨라지는줄 알아서 vm 관리자들 곤혹스러워해
@피치(183.101) 흐음... 사실 비동기는 속도 보다는 병렬처리가 목적이 되어야 할텐데 사람들이 다른 기대를 하고 있으면 곤혹스럽겠네..
Jvm이 실제 os에서 물려받아서 쓰는 쓰레드는 3개인가 제한 적인거고 그 쓰레드들이 코어 역할을 하는거지
진성스레드 쓰셈
해당 댓글은 삭제되었습니다.
@guiyom.org 빨리 공개해라 이기야
가상스레드에 국한되지 않는 기본적인 동시성 문제인데 가상스레드에서 문제되는 상황은 스레드 pinning이지