clang コンパイラの -pthread と 最適化オプションについて
Posted: 2016年3月19日(土) 09:39
はじめて質問させていただきます。
pthreadsを使用して数字をひたすらカウントする単純なものなのですが
コンパイル時に clang -pthread -o ***** *****.c とすると期待
どおりに動作するのですが、clang -pthread -O3 -o ***** *****.c
のように -O 〜 -O4 などの最適化オプションをつけるとひたすら "0" が
表示されます。最適化オプションをつけても正常に動作するようにしたい
のですがうまくいきません。いろいろ調べてみたのですが解決できません。
よろしくお願いします。
コードは以下のとおりです。
OSはLinux Mintを使用しています。
pthreadsを使用して数字をひたすらカウントする単純なものなのですが
コンパイル時に clang -pthread -o ***** *****.c とすると期待
どおりに動作するのですが、clang -pthread -O3 -o ***** *****.c
のように -O 〜 -O4 などの最適化オプションをつけるとひたすら "0" が
表示されます。最適化オプションをつけても正常に動作するようにしたい
のですがうまくいきません。いろいろ調べてみたのですが解決できません。
よろしくお願いします。
コードは以下のとおりです。
#include <stdio.h>
#include <pthread.h>
void th_a(void);
void th_b(void);
long long int grg;
int main(void)
{
pthread_t th_la, th_lb;
pthread_create(&th_la, NULL, (void *)th_a, (void *)NULL);
pthread_create(&th_lb, NULL, (void *)th_b, (void *)NULL);
pthread_join(th_la, NULL);
return 0;
}
void th_a(void)
{
for(grg = 0; ; grg++);
}
void th_b(void)
{
while(1)
{
printf("%lld\n", grg);
}
}