thread
125096
这个作者很懒,什么都没留下…
展开
-
InitializeCriticalSection
#include #include DWORD WINAPI ThreadProc1(LPVOID lpParameter);DWORD WINAPI ThreadProc2(LPVOID lpParameter);int sum=100;CRITICAL_SECTION cs;int main (void){ HANDLE hThread[2]={0}; hThread原创 2015-05-05 20:55:27 · 932 阅读 · 0 评论 -
类中使用线程例子3
#include #include #include class A{public: void StartThread(); unsigned friend __stdcall ThreadFunc(LPVOID lparam);public: int abc;};void A::StartThread(){ _beginthreadex(NULL,NULL,Thr原创 2015-05-05 22:38:07 · 320 阅读 · 0 评论 -
CreateRemoteThread
#include #include #include bool Start(TCHAR* buff,DWORD pid);BOOL EnablePrivilege(LPCTSTR lpszPrivilegeName, BOOL bEnable);int main (void){ EnablePrivilege(SE_DEBUG_NAME,TRUE);//获取本进程权限 DWO原创 2015-05-05 22:47:13 · 573 阅读 · 0 评论 -
CreateProcess
#include #include int main (void){ STARTUPINFO si={0}; GetStartupInfo(&si); si.wShowWindow=SW_SHOW;//不能隐藏显示是因为,获取启动信息失败 PROCESS_INFORMATION pi={0}; pi.hProcess=0;//返回一个句柄当新的进程 pi.hThread原创 2015-05-05 22:59:21 · 482 阅读 · 0 评论 -
迁程CreateFiber
#include LPVOID lpThread;VOID CALLBACK FiberProc(PVOID lpParameter);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ // 将主线程切换为纤程,为主纤程,只有转换为纤程后才可以切原创 2015-05-05 23:05:33 · 2176 阅读 · 0 评论 -
WaitForSingleObject
#include #include #include DWORD WINAPI ThreadProc( LPVOID lpParameter);int main (void){ DWORD IDThread=0; HANDLE hThread1=CreateThread(NULL,NULL,ThreadProc,(LPVOID)1,NULL,&IDThread); DWOR原创 2015-05-05 22:07:15 · 376 阅读 · 0 评论 -
类中使用线程例子4
#include #include #include class A{public: void StartThread(); DWORD static WINAPI ThreadFunc(LPVOID lparam);public: int abc;};void A::StartThread(){ CreateThread(NULL,NULL,ThreadFunc,t原创 2015-05-05 22:37:28 · 333 阅读 · 0 评论 -
DLL_THREAD_ATTACH防止远程线程注入
/*原理:当创建线程时,系统会向当前进程所有dll发送DLL_THREAD_ATTACH通知此时新的线程已经被创建但尚未执行,更精切的说已经创建了线程内核对象、线程堆栈等资源正处于初始化阶段。只有在每个dll正常处理了DLL_THREAD_ATTACH线程才开始执行对于远程线程本质上和本地线程完全一样,区别在于由其他进程创建如果在接受DLL_THREAD_ATTACH时通知结束线程,线原创 2015-05-05 22:50:29 · 5251 阅读 · 0 评论 -
CreateMutex
#include #include DWORD WINAPI ThreadProc1(LPVOID lpParameter);DWORD WINAPI ThreadProc2(LPVOID lpParameter);int sum=100;HANDLE hMutex=NULL;int main (void){ HANDLE Thread[2]={0}; Thread[0]=原创 2015-05-05 20:55:43 · 489 阅读 · 0 评论 -
C++11 多线程
#include #include #include #include //线程测试一void Test1(void);//线程测试二void Test2(void);//线程测试三void Test3(void);//线程测试四void Test4(void);int main(){ //Test1(); //Test2(); //Test3();原创 2016-05-04 00:56:16 · 239 阅读 · 0 评论 -
boost创建线程例子
#include #include void hello(){ std::cout <<"Hello world, I'm a thread!"<< std::endl;}int main(int argc, char* argv[]){ boost::thread thrd(&hello); thrd.join(); return 0;}/*Hello world原创 2016-05-04 10:35:39 · 760 阅读 · 0 评论 -
boost多线程编程条件变量
#include #include #include #include const int BUF_SIZE = 10;const int ITERS = 100;boost::mutex io_mutex;class buffer{public: typedef boost::mutex::scoped_lock scoped_lock; buffer()原创 2016-05-04 11:09:46 · 330 阅读 · 0 评论 -
boost线程局部存储
大多数函数都不是可重入的。这也就是说在某一个线程已经调用了一个函数时,如果你再调用同一个函数,那么这样是不安全的。一个不可重入的函数通过连续的调用来保存静态变量或者是返回一个指向静态数据的指针。 举例来说,std::strtok就是不可重入的,因为它使用静态变量来保存要被分割成符号的字符串。有两种方法可以让不可重用的函数变成可重用的函数。第一种方法就是改变接口,用指针或引用代替原先原创 2016-05-04 15:41:03 · 1179 阅读 · 0 评论 -
类中使用线程例子2
#include #include #include typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC)(LPVOID lpThreadParameter);typedef unsigned *PBEGINTHREADEX_THREADID;DWORD WINAPI ThreadFunc(LPVOID prarm);class原创 2015-05-05 22:34:18 · 355 阅读 · 0 评论 -
类中实现线程例子1
#include #include #include typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC)(LPVOID lpThreadParameter);typedef unsigned *PBEGINTHREADEX_THREADID;class ThreadObject{public: ThreadObject();原创 2015-05-05 22:31:50 · 368 阅读 · 0 评论 -
什么是线程互斥
线程之间通信的两个基本问题是互斥和同步线程同步是指线程之间具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒线程互斥是指对于共享的操作系统资源,在各线程访问时的排他性。当有若干戈线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其他要使用该资源必须等到,直到占用资源者释放该资源。线程互斥是一种特殊的线程同步。原创 2015-05-05 20:58:22 · 1215 阅读 · 0 评论 -
CreateEvent人工重置事件对象
#include #include /*人工重置的事件对象有信号状态,所有的线程都可以运行ResetEvent自动重置的事件对象有信号状态,所有的线程只有一个变为可调度线程*/DWORD WINAPI ThreadProc1( LPVOID lpParameter);DWORD WINAPI ThreadProc2( LPVOID lpParameter);HANDLE原创 2015-05-05 20:54:08 · 696 阅读 · 0 评论 -
AfxBeginThread
#include #include CWinApp theApp;UINT __cdecl ThreadFunc( LPVOID pParam );int main (void){ for (BYTE i=0;i<5;i++) { AfxBeginThread(ThreadFunc,(LPVOID)i,NULL,NULL,NULL); } getchar(); ret原创 2015-05-05 21:35:55 · 359 阅读 · 0 评论 -
SetThreadPriority
#include #include DWORD WINAPI ThreadProc(LPVOID lpParameter);int main( void ){ HANDLE Thread=CreateThread(NULL,NULL,ThreadProc,NULL,CREATE_SUSPENDED ,NULL); //设置线程优先级 SetThreadPriority(原创 2015-05-05 21:56:07 · 726 阅读 · 0 评论 -
类中使用线程例子5
#include #include #include //前置声明class A;struct studen{ A* pa;};class A{public: void test(void){abc=123;printf("test\n");} void StartThread(); DWORD static WINAPI ThreadFunc(LPVOID l原创 2015-05-05 22:41:40 · 332 阅读 · 0 评论 -
CreateEvent自动重置事件对象
#include #include /*人工重置的事件对象有信号状态,所有的线程都可以运行ResetEvent自动重置的事件对象有信号状态,所有的线程只有一个变为可调度线程*/DWORD WINAPI ThreadProc1( LPVOID lpParameter);DWORD WINAPI ThreadProc2( LPVOID lpParameter);HANDLE原创 2015-05-05 20:51:09 · 1049 阅读 · 0 评论 -
_beginthreadex
#include #include #include unsigned __stdcall Test(LPVOID p);int main (void){ uintptr_t Thread= _beginthreadex(NULL,NULL,Test,NULL,NULL,NULL); CloseHandle(reinterpret_cast(Thread)); getchar原创 2015-05-05 21:28:35 · 325 阅读 · 0 评论 -
CreateThread
#include #include DWORD WINAPI ThreadProc( LPVOID lpParameter);int main (void){ for (BYTE i=0;i<5;i++) { DWORD IDThread=0; HANDLE hThread=CreateThread(NULL,NULL,ThreadProc,(LPVOID)i,NULL,&原创 2015-05-05 21:30:34 · 335 阅读 · 0 评论 -
ExitThread
#include #include DWORD WINAPI ThreadProc( LPVOID lpParameter);void Test(void);//ExitThread函数和GetExitCodeThread配合使用,安全的确定线程是否执行完毕int main (void){ DWORD IDThread=0; DWORD ExitCode1=0; HANDLE原创 2015-05-05 21:30:20 · 621 阅读 · 0 评论 -
GetExitCodeThread
#include #include DWORD WINAPI ThreadProc( LPVOID lpParameter);//GetExitCodeThread确定一个线程是否结束这个函数并不是一个好的方法int main (void){ DWORD IDThread=0; DWORD ExitCode1=0; DWORD ExitCode2=0; HANDLE hThr原创 2015-05-05 21:33:45 · 683 阅读 · 0 评论 -
AfxBeginThread
#include #include CWinApp theApp;UINT __cdecl ThreadFunc( LPVOID pParam );int main (void){ CWinThread *pThread[5]={0}; for (BYTE i=0;i<5;i++) { pThread[i]=AfxBeginThread(ThreadFunc,(LPVOID原创 2015-05-05 21:40:51 · 328 阅读 · 0 评论 -
WaitForMultipleObjects
#include #include DWORD WINAPI ThreadProc( LPVOID lpParameter);/*如果此参数为true,函数返回时,在lphandles数组中的所有对象的状态信号。如果FALSE,函数返回在任何一个对象的状态被设置为有信号。在后一种情况下,返回值指示其状态产生函数返回对象。*/int main (void){ HANDLE原创 2015-05-05 21:58:35 · 589 阅读 · 0 评论 -
WaitForMultipleObjects
#include #include DWORD WINAPI ThreadProc( LPVOID lpParameter);/*如果此参数为true,函数返回时,在lphandles数组中的所有对象的状态信号。如果FALSE,函数返回在任何一个对象的状态被设置为有信号。在后一种情况下,返回值指示其状态产生函数返回对象。*/int main (void){ HANDLE原创 2015-05-05 22:03:13 · 530 阅读 · 0 评论 -
boost仅运行一次的例程
#include #include #include int i = 0;boost::once_flag flag =BOOST_ONCE_INIT;void init(){ ++i;}void thread(){ boost::call_once(&init, flag);}int main(int argc, char* argv[]){ boost:原创 2016-05-04 15:54:35 · 485 阅读 · 0 评论