static bool isA=true;
thread1()
{
while(1){
if(isA){
printf("A ");
isA = false;
}
}
}
thread2()
{
while(1){
if(!isA){
printf("notA ");
isA=true;
}
}
}
돌리면 A notA A notA 나올까여?
뮤텍스같은걸 걸어주지않으면 미정의동작이 나오지않을까요
From DC Wave
thread1()
{
while(1){
if(isA){
printf("A ");
isA = false;
}
}
}
thread2()
{
while(1){
if(!isA){
printf("notA ");
isA=true;
}
}
}
돌리면 A notA A notA 나올까여?
뮤텍스같은걸 걸어주지않으면 미정의동작이 나오지않을까요
From DC Wave
흉 씨언어에 쓰레드가 없는데 어쩔
이글은 곧 망글
C99에 잇지않나
rapzzard// 난 솔직히 쓰레드가 뭐지 내가 병신이라 모르는거군 했는데 C에 thread 없음?
createthread같은 검색어로 검색해주시는것
그런거신것
저는 여중생이라서 최신문법으로 공부하신것
어쨌든 요지는 두 스레드에서 한 변수에 접근할때 아무리 간단한 동작이라도 미정의동작이 나올수 있나는거지
ㅋㅋㅋ C월드에서 좀 신경 끄고 살았더니 이런게 있네..
저같은 어린친구들은 처음배울때 최신문법으로 겅부한다는거신것!>ㅅ<;;;;
POSIX 표준에는 더 옛날부터 있었지
근데 MS에서 C99도 제대로 지원하지도 않고 지원 계획도 없었는데 뭐 찾아보니 조금은 받아주는듯?
@ㅋㅋㅋㅋ : ㅇㅇ 근데 C언어에서는 없었지..POSIX내에 C표준라이브러리가 들어가긴해도 C표준 라이브러리에 POSIX 표준 라이브러리가 들어가진 못하니..
주제 자체가 뭐 C언어라고 한정해서 했던 얘기고..근데 pthread 자체는 구현체이기 때문에 (뭐 물론 레퍼런스 구현체만 한정해놓고 볼때;;) 잘은 모르지만 undefined와는 좀 다를 것 같은데..
어째튼 C11이라는게 있다는걸 알게 해줘서 땡큐함여..
어째튼 C언어 규격상 thread가 들어갔다면 저런류의 동작 자체는 당연히 undefined가 맞긴 함..
저런류가 N개 스레드가 1개의 변수에 동시에 접근할때 얘기죠?
race condition
저런 류라는게 그것보다는 좀 더 추상적인 어째튼 C언어에서 거의 동작 순서에 대해서는 정의가 되어 있지 않는 경우가 많음 (명확한 && || 류는 제외)
어째튼 너님이 물어본 원초적 질문에 대한 대답은 그러하다임.
ㅋㅋㅋㅋ의 말대로 이 문제는 C언어보다는 다른쪽 계통 (운영체제)에서 따져봐야하는 문제인 것 같긴하다..(그 대표적인 발언이 posix나 race condition류)
그렇군.... race condition은 할일이 없으니 찾아봐야지 히헷
근데 그냥 C++ 써..요즘 앵간한 임베디드 칩 벤더들도 C++컴파일러 같이 배포한다..영세한곳 아니면..
하긴 구현쪽문제라고 보는게 타당하죠?
C11에 thread가 완전히 들어갈 때를 기다리느니 pthread를 쓰거나 C++11을 쓴다..
그냥 심심해서 해본질문...
구현쪽 문제가 아니지..애초에 ㅋㅋㅋㅋ의 말처럼 걍 원론적인 문제임..
C++11갓
저런걸 구현쪽에서 처리하려면 거의 모든 구문에 배리어를 쳐줘야하는데 속도가 나오겠냔..
race condition이 먼지 모름;
찾아보면 많이 나오는데 뭔지 모르는게 뭐 대수임..
나도 C11에 thread가 들어간지 몰랐음..애초에 C11이 있는지도 몰랐음..
위키에 치니까 바로나오넹ㅋ
점심 끝났으니 다시 업무 모드로!
열씨미일하시라는것
http://autogram.tk/이
중고차 어플리케이션 어떤가요?