Использование потоков в C на Windows. Простой пример?

Что мне нужно и как я могу использовать потоки в C в Windows Vista?

Не могли бы вы привести простой пример кода?

Ответы

Ответ 1

Вот пример MSDN о том, как использовать CreateThread() в Windows.

Основная идея заключается в том, что вы вызываете CreateThread() и передаете ему указатель на вашу функцию потока, которая будет запускаться в целевом потоке после ее создания.

Простейший код для этого:

#include <windows.h>

DWORD WINAPI ThreadFunc(void* data) {
  // Do stuff.  This will be the first function called on the new thread.
  // When this function returns, the thread goes away.  See MSDN for more details.
  return 0;
}

int main() {
  HANDLE thread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
  if (thread) {
    // Optionally do stuff, such as wait on the thread.
  }
}

У вас также есть возможность вызвать SHCreateThread() - простую базовую идею, но для вас будет инициализация типа оболочки, если вы спросите ее, такие как инициализация COM и т.д.

Ответ 2

Вы использовали бы функцию CreateThread.

Вы упомянули семафоры. Для этого вы бы использовали CreateSemaphore.

Ответ 3

Атомные операции и мьютексы хороши. Я использую CreateThread и т.д., А не pthreads.