Neye ihtiyacım var ve Windows Vista'daki C'deki konuları nasıl kullanabilirim?Windows'ta C'deki konuları kullanma. Basit bir örnek?
Lütfen bana basit bir kod örneği verebilir misiniz?
Neye ihtiyacım var ve Windows Vista'daki C'deki konuları nasıl kullanabilirim?Windows'ta C'deki konuları kullanma. Basit bir örnek?
Lütfen bana basit bir kod örneği verebilir misiniz?
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.
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. –
Ayrıca, başka şeylerin yanı sıra yeni iş parçacığı üzerinde COM'u başlatmasını istiyorsanız SHCreateThread() öğesini kullanabilirsiniz. –
Bu bir C++ örneği gibi görünüyor (bağlantı). Bu C için de çalışır mı? – Jiminion
CreateThread işlevini kullanırsınız.
Semaforlardan da bahsettiniz. Bunun için CreateSemaphore kullanırsınız.
Atomik işlemler ve muteksler iyidir. Ben Pthreads değil, CreateThread vb kullanın.
pthreads boşver. Windows ve/veya Visual Studio'da? – Jiminion
no pthreads doğrudan uygun değildir. Windows ve/veya Visual Studio'da. Ancak mingw ve cygwin'i kullanabilirsiniz. –
Bu basit bir RTFM sorusu olsa da, gerçek bir soru değildir. Sonuçta, zaten birçok gerçek cevap var. –