2009-12-30 16 views

cevap

27

Windows'ta CreateThread() işlevinin nasıl kullanılacağı hakkında MSDN sample.

Temel fikir, CreateThread() öğesini çağırıp, iş parçacığınıza, iş parçacığı oluşturulduktan sonra çalışacak olan iş parçacığınıza bir işaretçi iletmenizdir.

bunu yapmak için en basit kodudur: Böyle COM başlatılıyor gibi bunu sorarsanız

#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. 
    } 
} 

Ayrıca SHCreateThread() -SAMe temel fikir çağırma seçeneği var ama sizin için bazı kabuk tipi başlatma yapacak vb.

+3

Ancak, CRT'yi yeni iş parçacığında kullanacak olursanız çok dikkatli olmanız gerektiğini unutmayın. Örneğin, MSVC'de, CRT'nin iç iş parçacığı yapılarını doğru bir şekilde ayırmasına/serbest bırakmasına izin vermek için, ilgili API'lerin yerine _beginthread/_beginthreadex ve _endthread kullanmalısınız. Diğer CRT'lerde de bunun bir şekilde böyle gitmesi gerektiğini düşünüyorum. –

+0

Ayrıca, başka şeylerin yanı sıra yeni iş parçacığı üzerinde COM'u başlatmasını istiyorsanız SHCreateThread() öğesini kullanabilirsiniz. –

+0

Bu bir C++ örneği gibi görünüyor (bağlantı). Bu C için de çalışır mı? – Jiminion

1

Atomik işlemler ve muteksler iyidir. Ben Pthreads değil, CreateThread vb kullanın.

+0

pthreads boşver. Windows ve/veya Visual Studio'da? – Jiminion

+0

no pthreads doğrudan uygun değildir. Windows ve/veya Visual Studio'da. Ancak mingw ve cygwin'i kullanabilirsiniz. –

İlgili konular