スレッドの関数 – プログラミング – Home

通知
すべてクリア

スレッドの関数


ジョージ
 ジョージ
(@ジョージ)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

二つのスレッドで同一のA関数を呼び出した場合の話なんですが
関数内部でSleep命令やループなどでA関数の処理を行っている最中に
他のスレッドがA関数を呼び出した場合、問題なく実行はできるのでしょうか?


引用解決済
トピックタグ
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

>二つのスレッドで同一のA関数を呼び出した場合の話なんですが
>関数内部でSleep命令やループなどでA関数の処理を行っている最中に
>他のスレッドがA関数を呼び出した場合、問題なく実行はできるのでしょうか?

この情報だけだと問題ある場合もあれば、無い場合もありますとしか・・

関数Aがスレッドセーフならば問題なしです・・


返信引用
ジョージ
 ジョージ
(@ジョージ)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

情報不足ですみません、スレッドセーフかどうかはヘルプを
参照してみましたが不明でした。
変わりにその関数の作成方法を書きます。

ダイアログベースで作成する。
作成したダイアログのメンバー関数を一つ作る。
ダイアログにボタンを作成し、スレッドを二つ並列に立ち上げる。
スレッド内部ではダイアログのメンバー関数を参照している。

これはスレッドセーフな関数なのでしょうか?


返信引用
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

これだけでは解りません。

グローバル変数を使用しないとかの情報が必要かと・・・


返信引用
Wanderer
 Wanderer
(@Wanderer)
ゲスト
結合: 22年前
投稿: 35
 

スレッドで共有する関数Aの中でどんな処理をしているかによります。

スレッドセーフの条件としてはこんなものでしょうか。

・Aの中で確保されたintとかcharなどの単純データ型へのアクセスはスレッド
 ごとに変数領域が確保されているため問題ありません。

・上記変数がクラスのインスタンスなら、そのクラスのうちAでアクセスする部
 分がグローバル変数等を使用していないか、使用しているならその値が突然
 変化しても動作に問題ないか。または変化しないことが確認できるか。

・Aでアクセスするのがメンバ変数やグローバル変数ならば、その値が突然変化
 しても動作に問題ないか。または変化しないことが確認できるか。

・関数の呼び出しなら、その呼んだ関数の中で使用している変数が上記の条件を
 満たすか。

・WindowsAPIの呼び出しは概ね大丈夫。(なんじゃないでしょうか)

思いつきで書いていますので、あくまで参考程度ということで。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

Aの中でstatic変数を使っているとヤバいかも。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

メモリだろがファイルだろがなんだろが、
複数のスレッドが資源を共有してたらヤバいかも。つか、ヤバい。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました