ワーカースレッドを呼び出し元スレッドから終了させるために、フラグを使って

// ワーカースレッド内
if(*flg == 0)
  return 0;

などとしていますが、

CInternetSession session;
session.OpenURL(・・・);

if(*flg == 0)
  return 0;

などのようにフラグを判定する前に時間のかかる関数などを実行すると、
関数が返ってくるまで終了できません。
このような場合でもすぐにワーカースレッドを終了させるには
どうすればよいのでしょうか。