
よろしくお願いします。
マルチスレッドとstatic変数の関係で悩んでいます。
マルチスレッドでグローバルstatic変数は
__declspec(thread) static int kensu;
ってしないと、マルチスレッド間で同じものになってしまうのはわかっているのですが
ファンクション内の場合はどうだったのかわかりません。
----------------------------
static int aa;
multi_th()
{
func();
}
func
{
static int bb;
}
----------------------------
この場合、変数aaはマルチスレッド同士で同じものとなると思うのですが
変数bbはマルチスレッド同士で同じものになってしまうのでしょうか
よろしくお願いします。
No.2
- 回答日時:
$cat test.c
static int foo;
int bar(){
return foo;
}
$gcc -S test.c
gcc は -S でアセンブラ出力 test.s を出します。
$cat test.s
.file "test.c"
.text
.p2align 2,,3
.globl bar
.type bar, @function
bar:
pushl %ebp
movl %esp, %ebp
movl foo, %eax
leave
ret
.size bar, .-bar
.local foo
.comm foo,4,4
.ident "GCC: (GNU) 3.4.4 [FreeBSD] 20050518"
ブロック外のstatic 変数は固定アドレスとなっているのがわかります。
int bar(){
static int foo = 7;
dummyfunc(&foo);
return foo;
} .file "test2.c"
.data
.p2align 2
.type foo.0, @object
.size foo.0, 4
foo.0:
.long 7
.text
.p2align 2,,3
.globl bar
.type bar, @function
bar:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
subl $12, %esp
pushl $foo.0
call dummyfunc
addl $16, %esp
movl foo.0, %eax
leave
ret
.size bar, .-bar
.ident "GCC: (GNU) 3.4.4 [FreeBSD] 20050518"
関数内static 変数もレジスタの影響を受けない固定領域であることがわかります。
ブロック内ならどうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# int tff(int clk) { static int state = 0; //状態 stat 1 2022/07/11 21:14
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
A4の紙に印刷されている文字を...
-
PC内で速度を遅くした音源をCD...
-
テキストエディタでVBを編集...
-
iosのshortcutアプリでmp3を連...
-
パイプを用いた通信 C#とMATLAB
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
Fortniteのクラッシュについて
-
eclipseでタブ入力ができなくな...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ExcelからCSVへウムラウトなど...
-
ガラケーからPCへの写真の取り込み
-
画像をトリミングしてフォルダ...
-
FAT32→NTFSは分かるけど、NTFS→...
-
拡張子「.IDJ」を、windo...
-
PHPの変数について教えて下さい
-
抗がん剤投与後のフラッシュ
-
フラッシュで作成された画像のU...
-
GoLiveで1.6MのQuickTimeがアッ...
-
FLASH MOVIEの保存の仕方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
複数のブックを新しいブックのS...
-
拡張子「.IDJ」を、windo...
-
A4の紙に印刷されている文字を...
-
PC内で速度を遅くした音源をCD...
-
2枚、マイクロSDカードを入...
-
GIMP separate+プラグイン クラ...
-
リストビューの選択状態を取得...
-
Accessのソースが見れない
-
eclipseでタブ入力ができなくな...
-
スマホでtxtファイルを編集する...
-
TextBoxにフォーカスを与えると...
-
ファイル数と合計サイズの取得方法
-
リストビューで選択行の背景を...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
garagebandのLR Mixの方法について
-
クラリスインパクトに替わるソ...
-
エアコンの冷媒 R410Aの重...
おすすめ情報