c语言中,创建的子线程如何给主线程发消息?

Python013

c语言中,创建的子线程如何给主线程发消息?,第1张

自己定义的信号,你要emit newOprMsg(unsigned int msg)

才行

不知道你emit了没~~

线程的run()里,你好赖也得加个exec()吧,要不无事件循环,制能收到你的signal?

你说的传递出去是传递给主线程吗,如果是的话那就很简单,因为同一个进程的线程之间共享一个堆栈的,你只需要定义一个全局变量,主线程和子线程都能访问到。但是这样你就需要注意访问这个全局变量的时候的访问冲突问题,一般这种问题是通过互斥锁解决的,也就是在访问全局变量之前先加锁,访问完了释放锁。

2 线程的使用

2.1 定义线程处理函数

DWORD WINAPI ThreadProc(

LPVOID lpParameter

//创建线程时,传递给线程的参数

)

2.2 创建线程

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes,

//安全属性

SIZE_T dwStackSize,

//线程栈的大小

LPTHREAD_START_ROUTINE lpStartAddress,

//线程处理函数的函数地址

LPVOID lpParameter,

//传递给线程处理函数的参数

DWORD dwCreationFlags,

//线程的创建方式,

LPDWORD lpThreadId

//创建成功,返回线程的ID

)创建成功,返回线程句柄

dwCreationFlags:

0 - 创建之后线程立刻执行

CREATE_SUSPENDED - 创建之后线程处于挂起状态。

2.3 结束线程

结束指定线程

BOOL TerminateThread(

HANDLE hThread,// handle to thread

DWORD dwExitCode // exit code

)

结束函数所在的线程

VOID ExitThread(

DWORD dwExitCode // exit code for this thread

)

2.4 关闭线程句柄

CloseHandle

LZ用fork()那不是多线程,是多进程了,你这个不需要多进程的,多线程就可以可以了,原理和linux一样只是函数名改一改就可以了,