- 浏览: 498207 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (185)
- job (15)
- linux/windows/unix/bash/shell (31)
- JAVA/J2EE/spring/hibernate/struts (30)
- VC/C++ (48)
- mysql/postgresql (6)
- php/jsp/asp/pear (1)
- FMS/flex/openlaszlo/red5/openmeetings (34)
- apache/tomcat/ftp/svn (6)
- xen/vm/Hadoop/cloudcompute (6)
- visual studio/eclipse/zendstudi/ant (8)
- others (1)
- windows异常处理 __try __except (1)
- (1)
- matlab (4)
- android (0)
最新评论
-
hongzhounlfd:
很透彻,很详细
依赖注入和控制反转 -
jefferyqjy:
谢谢~言简意赅~很明了!
依赖注入和控制反转 -
elderbrother:
太好了,谢谢
依赖注入和控制反转 -
east_zyd_zhao:
终于搞明白了
依赖注入和控制反转 -
Dremeng:
完美,一看就懂理解透彻
依赖注入和控制反转
Terminating a Thread
Terminating a thread has the following results:
结束线程产生以下结果:
Any resources owned by the thread, such as windows and hooks, are freed. 线程的资源被释放
The thread exit code is set.设置线程退出码
The thread object is signaled. 标记线程对象
If the thread is the only active thread in the process, the process is terminated. For more information, see Terminating a Process.
进程只有一个线程,则进程被停止,参看停止进程
The GetExitCodeThread function returns the termination status of a thread. While a thread is executing, its termination status is STILL_ACTIVE. When a thread terminates, its termination status changes from STILL_ACTIVE to the exit code of the thread.
获取退出线程代码函数返回线程的退出状态,当线程执行时候,结束状态为STILL_ACTIVE.当线程被结束,结束状态为退出线程的退出码
When a thread terminates, the state of the thread object changes to signaled, releasing any other threads that had been waiting for the thread to terminate. For more about synchronization, see Synchronizing Execution of Multiple Threads.
当线程停止时,标记线程对象的状态,启动其他在等待的线程。关于“同步”请看“多线程同步机制”
When a thread terminates, its thread object is not freed until all open handles to the thread are closed.
当一个线程停止,它的线程对象没有释放,直达关于该线程的句柄被关闭
How Threads are Terminated
如何结束线程
A thread executes until one of the following events occurs:
有以下方法
The thread calls the ExitThread function.
线程自己调用ExitThread函数
Any thread of the process calls the ExitProcess function.
进程里面的任何线程调用 ExitProcess 函数
The thread function returns.
线程函数自己返回
Any thread calls the TerminateThread function with a handle to the thread.
拥有该线程句柄的其他线程调用TerminateThread 函数
Any thread calls the TerminateProcess function with a handle to the process.
拥有该线程句柄的其他线程调用TerminateProcess 函数
The exit code for a thread is either the value specified in the call to ExitThread, ExitProcess, TerminateThread, or TerminateProcess, or the value returned by the thread function.
线程的退出码是调用ExitThread,ExitProcess,TerminateThread或者TerminateProcess的特殊值,或者是线程函数返回的值。
If a thread is terminated by ExitThread, the system calls the entry-point function of each attached DLL with a value indicating that the thread is detaching from the DLL (unless you call the DisableThreadLibraryCalls function). If a thread is terminated by ExitProcess, the DLL entry-point functions are invoked once, to indicate that the process is detaching. DLLs are not notified when a thread is terminated by TerminateThread or TerminateProcess. For more information about DLLs, see Dynamic-Link Libraries.
如果线程函数是用ExitThread函数结束的,系统用调用和线程相关的每一个dll的入口点函数(如果没有调用函数DisableThreadLibraryCalls )。如果线程是用ExitProcess函数结束的,dll的入口点函数被回调一次,用于表明和进程分离了。DLL不会被通知,当进程是用TerminateThread或 TerminateProcess函数结束的。
The TerminateThread and TerminateProcess functions should be used only in extreme circumstances, since they do not allow threads to clean up, do not notify attached DLLs, and do not free the initial stack. In addition, handles to objects owned by the thread are not closed until the process terminates. The following steps provide a better solution:
函数TerminateThread 和TerminateProcess 只在特殊情况下使用,因为他们不允许线程清理,不通知dll,不是放初始化的堆栈。并且,线程的对象句柄不会被关闭知道进程结束。以下方法提供比较好的解决方法
Create an event object using the CreateEvent function.
用函数CreateEvent函数创建事件对象
Create the threads.
创建线程
Each thread monitors the event state by calling the WaitForSingleObject function.
每一个线程调用函数WaitForSingleObject监控事件状态
Use a wait time-out interval of zero.
Each thread terminates its own execution when the event is set to the signaled state (WaitForSingleObject returns WAIT_OBJECT_0).
每一个进程结束它自己的执行当事件设置为信号状态(WaitForSingleObject)
Terminating a thread has the following results:
结束线程产生以下结果:
Any resources owned by the thread, such as windows and hooks, are freed. 线程的资源被释放
The thread exit code is set.设置线程退出码
The thread object is signaled. 标记线程对象
If the thread is the only active thread in the process, the process is terminated. For more information, see Terminating a Process.
进程只有一个线程,则进程被停止,参看停止进程
The GetExitCodeThread function returns the termination status of a thread. While a thread is executing, its termination status is STILL_ACTIVE. When a thread terminates, its termination status changes from STILL_ACTIVE to the exit code of the thread.
获取退出线程代码函数返回线程的退出状态,当线程执行时候,结束状态为STILL_ACTIVE.当线程被结束,结束状态为退出线程的退出码
When a thread terminates, the state of the thread object changes to signaled, releasing any other threads that had been waiting for the thread to terminate. For more about synchronization, see Synchronizing Execution of Multiple Threads.
当线程停止时,标记线程对象的状态,启动其他在等待的线程。关于“同步”请看“多线程同步机制”
When a thread terminates, its thread object is not freed until all open handles to the thread are closed.
当一个线程停止,它的线程对象没有释放,直达关于该线程的句柄被关闭
How Threads are Terminated
如何结束线程
A thread executes until one of the following events occurs:
有以下方法
The thread calls the ExitThread function.
线程自己调用ExitThread函数
Any thread of the process calls the ExitProcess function.
进程里面的任何线程调用 ExitProcess 函数
The thread function returns.
线程函数自己返回
Any thread calls the TerminateThread function with a handle to the thread.
拥有该线程句柄的其他线程调用TerminateThread 函数
Any thread calls the TerminateProcess function with a handle to the process.
拥有该线程句柄的其他线程调用TerminateProcess 函数
The exit code for a thread is either the value specified in the call to ExitThread, ExitProcess, TerminateThread, or TerminateProcess, or the value returned by the thread function.
线程的退出码是调用ExitThread,ExitProcess,TerminateThread或者TerminateProcess的特殊值,或者是线程函数返回的值。
If a thread is terminated by ExitThread, the system calls the entry-point function of each attached DLL with a value indicating that the thread is detaching from the DLL (unless you call the DisableThreadLibraryCalls function). If a thread is terminated by ExitProcess, the DLL entry-point functions are invoked once, to indicate that the process is detaching. DLLs are not notified when a thread is terminated by TerminateThread or TerminateProcess. For more information about DLLs, see Dynamic-Link Libraries.
如果线程函数是用ExitThread函数结束的,系统用调用和线程相关的每一个dll的入口点函数(如果没有调用函数DisableThreadLibraryCalls )。如果线程是用ExitProcess函数结束的,dll的入口点函数被回调一次,用于表明和进程分离了。DLL不会被通知,当进程是用TerminateThread或 TerminateProcess函数结束的。
The TerminateThread and TerminateProcess functions should be used only in extreme circumstances, since they do not allow threads to clean up, do not notify attached DLLs, and do not free the initial stack. In addition, handles to objects owned by the thread are not closed until the process terminates. The following steps provide a better solution:
函数TerminateThread 和TerminateProcess 只在特殊情况下使用,因为他们不允许线程清理,不通知dll,不是放初始化的堆栈。并且,线程的对象句柄不会被关闭知道进程结束。以下方法提供比较好的解决方法
Create an event object using the CreateEvent function.
用函数CreateEvent函数创建事件对象
Create the threads.
创建线程
Each thread monitors the event state by calling the WaitForSingleObject function.
每一个线程调用函数WaitForSingleObject监控事件状态
Use a wait time-out interval of zero.
Each thread terminates its own execution when the event is set to the signaled state (WaitForSingleObject returns WAIT_OBJECT_0).
每一个进程结束它自己的执行当事件设置为信号状态(WaitForSingleObject)
发表评论
-
C++STL轻松导学(2)
2011-09-27 17:02 13232.2.2 第二版:工业时代- ... -
C++ STL轻松导学
2011-09-27 16:59 1179作为C++标准不可缺少的 ... -
Chapter 6 Exceptions(JAVA EXCEPTION IN NATIVE CODE)
2011-09-26 09:53 1500Contents | Prev | Next | Index ... -
JNI编程中如何传递参数和返回值。
2011-09-14 17:51 1794首先要强调的是,native方法不但可以传递Java的基本类型 ... -
Windows Mobile与Android应用开发对比
2011-09-06 11:44 1297Windows Mobile在经历过最初的Wince系列,po ... -
android和JNI经典blog.doc
2011-09-01 15:29 1753Android JNI调用 2011-02-24 1 ... -
定义VC 消息映射函数小结
2011-08-21 22:15 1322定义VC 消息映射函数小 ... -
多线程中的事件对象
2011-08-21 14:23 1448Using Event Objects 使用事件对象 Appl ... -
VC++多线程调用webservice实例
2011-08-21 12:04 1590一、开始多线程 1.开始 ... -
多线程同步机制(Vc++)
2011-08-21 09:46 1743Synchronizing Execution of Mult ... -
VS2005使用多字节字符集问题
2011-08-03 13:27 20861>------ 已启动生成: 项目: psgdatat ... -
matlab的作图函数(二维) 星号,点号 颜色
2011-07-27 14:57 10042zz matlab的作图函数(二维 ... -
android 调用C++的so
2011-07-08 18:36 4399第一步:开发环境的安 ... -
windows异常处理__try__except
2011-07-07 14:24 1976try-except用法 try except是win ... -
Java中的一个byte
2011-06-30 14:34 1016Java中的一个byte,其范围是-128~127的,而Int ... -
NDK中char*如何转换成jstring
2011-06-30 13:05 1878JNIEXPORT jstring JNICALLJava_T ... -
CFileDialog多选文件时的最大数量
2011-06-25 20:29 2289system("explorer d:\我的 ... -
C++信号处理编程风格规范
2011-06-24 10:07 21671.背景: C++做数字信号处理很普遍,如何 ... -
C++如何获取系统时间
2011-06-22 11:31 659//方案— 优点:仅使用C标准库;缺点:只能精确到秒级 #in ... -
C++编码中减少内存缺陷的方法和工具
2011-06-14 10:22 1199C++编码中减少内存缺陷的方法和工具 编程技术 ...
相关推荐
- **资源管理**:线程可能会创建和使用资源,因此在结束线程之前,确保正确地清理和释放这些资源。 在《vc++网络编程经典案例》一书中,作者梁老师可能通过具体的网络编程案例展示了如何在VC++中创建和管理线程,...
本资源提供了一种方法,教您如何在VC++中实现等待一个已有线程自动结束的功能。以下是关于这一主题的详细解释。 1. **线程创建与管理**: 在VC++中,可以使用`CreateThread`函数或`_beginthreadex`函数创建线程。...
多线程抽签VC++源码实现,若运行时出现“软件目录下不存在列表文件list.txt. 请手动载入或放置到软件目录下”,请将list.txt放置于EXE同级目录内再运行。在这个程序中,抖动线程的结束时间有不确定性,所以不保证...
多线程VC++文件搜索的实现主要包括以下几个关键点: 1. **线程创建**:首先,需要创建并启动多个线程。在VC++中,可以使用`_beginthread`或`CreateThread`函数来创建新线程。每个线程负责一个特定的搜索任务,如...
**VC++多线程编程详解** 在Windows平台上,VC++(Microsoft Visual C++)是开发C++应用程序的主要工具,它提供了丰富的库支持,包括对多线程编程的支持。多线程编程是现代软件开发中不可或缺的技术,它可以充分利用...
线程执行完其任务后,会自动退出,也可以通过调用`ExitThread`函数来提前结束线程。 3. **线程同步**:线程同步是为了避免多个线程同时访问同一资源导致数据不一致。Windows提供了多种同步机制,如: - **临界区...
- **线程创建与销毁**:如何使用Windows API或std::thread创建线程,以及何时和如何结束线程。 - **资源共享与同步**:如何在多线程之间共享数据,以及如何使用互斥锁避免数据竞争。 - **线程优先级**:如何设置线程...
// 等待线程结束 ``` **线程同步与通信** 在多线程环境下,数据共享可能导致竞态条件和死锁等问题。为了确保线程安全,我们需要使用同步机制,如临界区、互斥量、事件、信号量等。 - **临界区(Critical Section)...
此外,还有`TerminateThread`来强制结束线程,`WaitForSingleObject`和`WaitForMultipleObjects`用于线程间的同步等待,防止竞态条件和数据不一致。 在MFC(Microsoft Foundation Classes)框架中,多线程编程更加...
线程可以自行结束,或者由父线程调用`TerminateThread`强制结束。然而,`TerminateThread`是危险的,因为它可能不释放资源,所以推荐使用同步对象通知线程退出。 6. **进程与线程的关系**:进程是资源分配的基本...
VC++,即Visual C++,是Microsoft提供的一种强大的C++开发环境,支持创建多线程应用程序。本篇文章将深入探讨VC++中的多线程技术,包括其基本概念、创建方法以及常见问题。 一、多线程基础 多线程允许一个应用程序...
线程的生命周期受多种因素控制,包括线程函数的返回、ExitThread()的调用、TerminateThread()的强制终止以及进程本身的结束。 #### 3. 多线程在串口通信中的应用 ##### 3.1 串口通信与线程同步 串口通信的特点...
在VC++中,我们首先需要初始化Winsock(通常在程序开始时调用`WSAStartup`函数),并在结束时清理(调用`WSACleanup`)。 2. **创建TCP套接字**:使用`socket`函数创建一个套接字句柄,指定`AF_INET`作为地址家族...
通过以上步骤,你可以创建一个简单的基于对话框的多线程VC++应用程序,利用互斥量确保线程安全。这只是一个基础示例,实际应用中可能还需要处理更多细节,如错误处理、线程同步等问题。理解这些基本概念和机制后,你...
// 等待子线程结束 return 0; } ``` 线程间通信是多线程编程中的另一个关键点。VC++提供了多种同步机制,如互斥量(`mutex`)、条件变量(`condition_variable`)、信号量(`semaphore`)等。这些工具用来防止...
- **线程管理与控制**:线程的生命周期主要包括创建、启动、运行和结束。在VC++中,线程的终止可以通过线程函数返回、调用`ExitThread()`或在异常情况下使用`TerminateThread()`来实现。此外,还可以通过线程句柄来...
4. **TerminateThread**:强制结束线程,应谨慎使用,因为它可能不执行清理操作。 5. **WaitForSingleObject** / **WaitForMultipleObjects**:用于同步线程,等待线程结束或其他事件发生。 ### 四、Win32 API多...
Vc++ 打造局域网聊天室(9)---程序关闭及线程的结束 http://www.3800hk.com/donghua/g/27574.html Vc++ 打造局域网聊天室(10)---任务栏托盘功能的实现 http://www.3800hk.com/donghua/g/27627.html
包里面有10个文件,分别是:如何安全终止线程;如何创建UI线程;...如何等待线程结束;如何挂起和恢复线程;如何获得线程的退出码;如何使用互斥量;如何使用临界区;如何使用事件;如何使用信号量
5. 等待所有线程结束:使用WaitForMultipleObjects()函数等待所有线程完成。 在实际开发中,合理设置线程优先级有助于提高程序响应速度,避免饥饿现象(低优先级线程长时间无法执行),以及防止优先级反转和优先级...