线程学习日记(1)

原创 2005年03月02日 20:26:00

1)线程的创建

创建函数--引用MSDN上的函数

HANDLE CreateThread(
  LPSECURITY_ATTRIBUTES  lpThreadAttributes,
  SIZE_T  dwStackSize,
  LPTHREAD_START_ROUTINE  lpStartAddress,
  LPVOID  lpParameter,
  DWORD   dwCreationFlags,
  LPDWORD   lpThreadId
);
第一个参数 pThreadAttributes  是函数的安全属性,开始设置为默认安全属性  NULL
第二个参数  dwStackSize  是开始分配给线程的堆栈页面的大小 可以设置为默认大小 0
第三个参数 lpStartAddress  线程的入口函数 可以任意设置
              DWORD WINAPI Fun1Pro(LPVOID lpParameter);
第四个是传递给线程的参数,类型为指针型 可以为NULL
第五个参数 dwCreationFlags 指线程何时调用 如果是CREATE_SUSPENDED  那么线程在创建的时候不运行
                  直到调用ResumeThread函数
                 如果为0 那么在线程创建完成后就开始运行;
第六个参数  lpThreadId是用来传递线程ID的 如果为NULL 则不返回线程ID

下面是我开始做的一个线程程序

DWORD WINAPI Fun1Pro(LPVOID lpParameter);
void main()
{
 HANDLE hThread1;
 hThread1=CreateThread(NULL,0,Fun1Pro,NULL,0,NULL);
 CloseHandle(hThread1);
 cout<<"main thread run"<<endl;
 
}

DWORD WINAPI Fun1Pro(LPVOID lpParameter)
{
 cout<<"thread2 is run"<<endl;
 return 0;
}

这个程序运行得不到理想得结果,就是当主线程运行完成后,我创建的那个进程没有得到运行,翻看资料得到得结果是:当主线程执行完毕后,主线程退出,主线程退出,那么它创建得进程也就要随之退出,这就是得不到thread2 is run得原因;

为了让创建得进行能够运行,总要引进一个Sleep函数,在主函数得出口处调用该函数,就可以让主线程暂定运行,也就驶说主线程放弃了CPU,这样创建的进程就有机会执行了void main()
{
 HANDLE hThread1;
 hThread1=CreateThread(NULL,0,Fun1Pro,NULL,0,NULL);
 CloseHandle(hThread1);
 cout<<"main thread run"<<endl;

Sleep(10);
 
}


  


  
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考

GPU线程以网格(grid)的方式组织,而每个网格中又包含若干个线程块,在G80/GT200系列中,每一个线程块最多可包含512个线程,Fermi架构中每个线程块支持高达1536个线程。同一线程块中的...

Java学习日记之分身有术:线程

------- android培训、java培训、期待与您交流! ---------- 程序运行中,有进程和线程两个概念。他们分别对应一个动态执行过程并相互联系,是程序运行中比较重要的执行过程。 程序...

黑马程序员_Java学习日记第四天-线程、Java1.5的新特性

------- android培训、java培训、期待与您交流! ---------- 线程   创建线程的两种方式: 第一种 继承thread类,新建子类 第二种 1 定义类实现Run...

黑马程序员--.Net学习日记——线程

---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------    黑马程序员--.Net...

C++学习日记 1

黑马程序员_学习日记59_705Dom1(事件、window对象、document对象)

一、简介 DOM(Document Object Model,文档对象模型)就是把Html页面模拟成一个对象,就像XDocument一样,把Xml模拟成了一个对象。 JavaScript和Dom的...

Linux和Windows学习日记1

MinGW提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW收集了一系列免费的Windows使用的头文件和库文件;同时整合了GNU 的工具集,特别是GNU程序开发工具,比如gc...

Django学习日记1

创建项目django-admin.py startproject XXX,进入项目根目录XXX下,创建test模块python manage.py startapp test(Django 1.8.x...

黑马程序员——java学习日记1——IO部分总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、流 Stream    3步骤:1——明确源和类型 2——明确目的地 3——是否提...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)