当前位置: 技术问答>linux和unix
windows下面的线程代码怎么移植到unix下面去?
来源: 互联网 发布时间:2015-08-30
本文导语: 下面是windows下运行线程的一段代码,请问在unix下面怎么实现? HANDLE ThreadArray; CWinThread* pRegisterThread = AfxBeginThread(RegisterTask, this,THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); DuplicateHandle(GetCurrentProcess(),pRegisterThread->m_hThread...
下面是windows下运行线程的一段代码,请问在unix下面怎么实现?
HANDLE ThreadArray;
CWinThread* pRegisterThread = AfxBeginThread(RegisterTask, this,THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
DuplicateHandle(GetCurrentProcess(),pRegisterThread->m_hThread,GetCurrentProcess(), &ThreadArray[0], 0, FALSE,DUPLICATE_SAME_ACCESS);
pRegisterThread->ResumeThread();
::WaitForMultipleObjects(1, ThreadArray, TRUE, INFINITE);
::CloseHandle(ThreadArray);
HANDLE ThreadArray;
CWinThread* pRegisterThread = AfxBeginThread(RegisterTask, this,THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
DuplicateHandle(GetCurrentProcess(),pRegisterThread->m_hThread,GetCurrentProcess(), &ThreadArray[0], 0, FALSE,DUPLICATE_SAME_ACCESS);
pRegisterThread->ResumeThread();
::WaitForMultipleObjects(1, ThreadArray, TRUE, INFINITE);
::CloseHandle(ThreadArray);
|
unix和Linux本来是没得线程的概念的,只有进程,fork()实现,底层都是调用_clone(),
你可以用_clone(),加上相关设置减少进程开销来实现。呵呵,不过,没见到有人自己这么用过。
大多数Unix/linux都支持posix标准,只要支持posix,就可以用posix线程库.
posix线程其实只是一种轻量级的进程实现。
我的一点体会:
http://blog.gameres.com/show.asp?BlogID=78&column=86
具体可以参考联机手册。
你可以用_clone(),加上相关设置减少进程开销来实现。呵呵,不过,没见到有人自己这么用过。
大多数Unix/linux都支持posix标准,只要支持posix,就可以用posix线程库.
posix线程其实只是一种轻量级的进程实现。
我的一点体会:
http://blog.gameres.com/show.asp?BlogID=78&column=86
具体可以参考联机手册。
|
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
yoke_wolf(漠中草)
thread == light weight process
用pthread
AfxBeginThread->pthread_create
自己找书看,握有,你要发给你english version
yoke_wolf(漠中草)
thread == light weight process
用pthread
AfxBeginThread->pthread_create
自己找书看,握有,你要发给你english version
|
Win的线程机制与POSIX的线程机制完全不一样。没法移植。在UNIX里重新写吧。