thread func이 들어있는 소스에 static으로 전역변수 선언시에
생성된 threads 모두가 그 전역변수를 공유하게 되나요?
아니면 각 threads별로 static 변수를 가지게 되는 건가요?
몇라인 짜보면 알수있을것 같은데요..
예전에 C문법익힐때 변수형태에 대해서 자세히 알아보지 않으신 모양이군요.
괜찮은 C 문법책을 찾아서 다시 한번 그부분을 봐보시기 바랍니다.
static 은 일반 전역변수와 다르게 두어가지 큰 특징을 지니고 있으니까요.
쓰레드 코드가 있는 C소스파일에 일반적인 전역변수가 아닌 static 변수를 쓰는 것은 일단 쓰레드코드내에서만 변수를 공유하겠다는 말입니다. static 변수는 선언된 소스파일 내에서만 scope가 인정되서 일정수준의 변수은폐기능을 사용할 수 있습니다.
저도 사실 처음 C공부할때는 이해가 안돼다가 나중에 코딩하다가 이해했던 기억이나네요.
static에는 또다른 중요한 특징이 있습니다. 이건 스스로 찾아보세요. 질문하신 내용과는 직접적인 연관이 없어서리(게다가 저는 말주변이 없는지라)... ^^
Linux에서 여러가시 소스를 보다보면 공부가 참 많이 됩니다. ^^
doogle.
아마도 의도하신 질문에 대한 답변은, 생성된 threads 모두가 그 전역변수를 공유하게 됩니다. 입니다.
그것을 피하려면 TLS (Thread Local Storage)를 사용해야 합니다. pthread 에서는 다음 일련의 함수들을 사용합니다.
pthread_key_create, pthread_key_delete pthread_setspecific, pthread_getspecific
Win32는. TlsAlloc, TlsFree, TlsSetValue, TlsGetValue 입니다.
Orion Project : http://orionids.org
저도 질문하신 의도를 추측하여 말씀드리면 :) static keyword의 존재 여부와 무관하게 모든 전역변수는 공유됩니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다. 아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다. 항상 많을 것입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
몇라인 짜보면 알수있을것 같은데요..
몇라인 짜보면 알수있을것 같은데요..
^^;;
예전에 C문법익힐때 변수형태에 대해서 자세히 알아보지 않으신 모양이군요.
괜찮은 C 문법책을 찾아서 다시 한번 그부분을 봐보시기 바랍니다.
static 은 일반 전역변수와 다르게 두어가지 큰 특징을 지니고 있으니까요.
쓰레드 코드가 있는 C소스파일에 일반적인 전역변수가 아닌 static 변수를 쓰는 것은 일단 쓰레드코드내에서만 변수를 공유하겠다는 말입니다. static 변수는 선언된 소스파일 내에서만 scope가 인정되서 일정수준의 변수은폐기능을 사용할 수 있습니다.
저도 사실 처음 C공부할때는 이해가 안돼다가 나중에 코딩하다가 이해했던 기억이나네요.
static에는 또다른 중요한 특징이 있습니다. 이건 스스로 찾아보세요. 질문하신 내용과는 직접적인 연관이 없어서리(게다가 저는 말주변이 없는지라)... ^^
Linux에서 여러가시 소스를 보다보면 공부가 참 많이 됩니다. ^^
doogle.
Re: thread 안에서 static 변수 사용시.
아마도 의도하신 질문에 대한 답변은,
생성된 threads 모두가 그 전역변수를 공유하게 됩니다.
입니다.
그것을 피하려면 TLS (Thread Local Storage)를 사용해야 합니다.
pthread 에서는 다음 일련의 함수들을 사용합니다.
pthread_key_create, pthread_key_delete
pthread_setspecific, pthread_getspecific
Win32는.
TlsAlloc, TlsFree, TlsSetValue, TlsGetValue
입니다.
Orion Project : http://orionids.org
저도 질문하신 의도를 추측하여 말씀드리면 :)static keywor
저도 질문하신 의도를 추측하여 말씀드리면 :)
static keyword의 존재 여부와 무관하게 모든 전역변수는 공유됩니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
댓글 달기