c++遍历当前进程的所有线程

c++遍历当前进程的所有线程,第1张

看函数原型:

DWORD WINAPI SuspendThread(

  _In_  HANDLE hThread

);

需要传人线程句柄。这个句柄可以用 OpenThread 来打开指定 ID 的线程来得到,即结构体中的th32ThreadID。

ios有三种主要方法:1、NSThread。2、NSOperation。3、GCD。

1、 NSThread:

调用方法如下:如果需要函数参数的话,可以通过Object传递。

11:[NSThread detachNewThreadSelector:@selector(threadInMainMethod:) toTarget:self withObject:nil];

12:NSThread myThread = [[NSThread alloc] initWithTarget:self selector:@selector(threadInMainMethod:) object:nil];

[myThread start];

13: [obj performSelectorInBackground:@selector(threadMe) withObject:nil];

2、 NSOperation:

NSOperation也是多线程的一种,NSOpertaion有2种形式

(1) 并发执行

并发执行你需要重载如下4个方法

//执行任务主函数,线程运行的入口函数

- (void)start

//是否允许并发,返回YES,允许并发,返回NO不允许。默认返回NO

-(BOOL)isConcurrent

- (BOOL)isExecuting

//是否已经完成,这个必须要重载,不然放在放在NSOperationQueue里的NSOpertaion不能正常释放。

- (BOOL)isFinished

比如TestNSOperation:NSOperaion 重载上述的4个方法,

声明一个NSOperationQueue, NSOperationQueue queue = [[[NSOperationQueue alloc ] init] autorelease];

[queue addOperation:testNSoperation];

它会自动调用TestNSOperation里的 start函数,如果需要多个NSOperation,你需要设置queue的一些属性,如果多个NSOperation之间有依赖关系,也可以设置,具体可以参考API 文档。

(2)非并发执行

-(void)main

只需要重载这个main方法就可以了。

3、 GCD

GCD很强大,我的使用经验很少。但是scorpiozj 总结的比较全面

。。一个进程下面可以有多个线程,你怎么能“这个PID的值的线程ID”?

你最多只能做到枚举这个进程下面的所有线程,然后你自己查找合适的线程。

要枚举进程中的所有线程,要先用

CreateToolHelp32Snapshot

创建一个快照,然后用

Thread32First

Thread32Next

一项一项遍历

线程入口地址,参加文章

>

#include <tlhelp32h>

int GetProcessThreadList(DWORD th32ProcessID) //进程的ID

{

HANDLE hThreadSnap;

THREADENTRY32 th32;

hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, th32ProcessID);

if (hThreadSnap == INVALID_HANDLE_VALUE)

{

return 1;

}

th32dwSize = sizeof(THREADENTRY32);

if (!Thread32First(hThreadSnap, &th32))

{

CloseHandle(hThreadSnap);

return 1;

}

do

{

if (th32th32OwnerProcessID == th32ProcessID)

{

printf("ThreadID: %ld\n", th32th32ThreadID); //显示找到的线程的ID

}

}while(Thread32Next(hThreadSnap, &th32));

CloseHandle(hThreadSnap);

return 0;

}

以上就是关于c++遍历当前进程的所有线程全部的内容,包括:c++遍历当前进程的所有线程、ios 怎么获取当前的线程数目、VB 如何获取指定pid的线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9338728.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存