首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

历程是不是由线程创建的~新手。

2013-02-27 
进程是不是由线程创建的~新手。。进程是不是由线程创建的~新手。。[解决办法]线程是由进程创建的[解决办法]“是

进程是不是由线程创建的~新手。。
进程是不是由线程创建的~新手。。
[解决办法]
线程是由进程创建的
[解决办法]
“是获取哪个线程创建了这个进程呢”
没看懂啥意思。。。

DWORD GetWindowThreadProcessId(HWND hwnd,LPDWORD lpdwProcessld); // 获取窗口的进程ID和线程ID
此函数返回窗口的线程ID和得到该线程所属的进程的ID


[解决办法]


进程是一个术语,用来描述一组资源和程序运行所需的内存分配。对于每一个被加载到内存的exe,在它的生命周期中操作系统会为之创建一个单独隔离的进程。一个进程的失败不会影响其他的进程。

每一个Win32进程都有一个唯一的进程标识(PID),当需要时,它们能被操作系统加载或卸载(也可通过Win32 API编程调用)。

每一个Win32进程都恰好包含一个用作程序入口点(entry point)的主线程。
首先,线程是进程中的基本执行单元(a path of execution)。正式的说法是:进程的入口点创建的第一个线程被称为主线程。Win32 GUI桌面程序使用WinMain()函数作为程序入口点,而一个控制台程序提供Main()函数实现相同的目的。

仅包含一个主线程的进程是线程安全的,这是由于在某个特定时刻只有一个线程访问程序中的数据。然而,如果这个线程正在执行一个复杂的操作(比如:输出一个冗长的文件,运行一个耗时的计算或尝试连接一个数千公里外的远程服务器),那么这个线程所在的进程(特别是GUI程序)对于用户来说会显得像没有响应一样。

由于单线程程序的这个潜在缺陷,Win32 API可让主线程使用如CreateThread()之类的Win32 API函数另外产生次线程(术语也称为工作线程,work thread)。每一个线程(无论主线程还是次线程)都是进程中的一个独立执行单元(unique path of execution),它们能够同时访问那些共享数据。

[解决办法]
进程不是由线程创建的。
在Linux上,进程是通过fork一个线程,然后在将新线程转变成进程来实现进程的创建。
在Windows上,新进程是由另外一个进程创建的,进程创建的主要工作是分配进程要使用的内存及初始化一系列数据结构,如_EPROCESS和PEB等,然后加载PE文件,最后创建进程的第一个线程。

热点排行