【请教高手】怎么写多线程的程序? 好像需要用什么pthread、mthread之类的库,具体不是很懂。公认比较好的做法是什么样的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去下载一本<<win32多线程程序设计>>,侯捷写的. 基本上分两种:windows和linux/unix.你通了一种,那另一种也就是形势上的差别而已了.偶不懂linux,可能说错了.还请原谅. 是啊~可以参考一下Charles Petzold编写的《windows程序设计》的多任务和多线程那一章~ Linux下线程用<pthread.h>库,遵循POSIX管理规范~~我也是最近才学的 pthread_create() 创建线程pthread_cancel() 取消线程 到msdn上找找,有很多例子!#include <windows.h>#include <conio.h>DWORD WINAPI ThreadFunc( LPVOID lpParam ) { char szMsg[80]; wsprintf( szMsg, "Parameter = %d.", *(DWORD*)lpParam ); MessageBox( NULL, szMsg, "ThreadFunc", MB_OK ); return 0; } VOID main( VOID ) { DWORD dwThreadId, dwThrdParam = 1; HANDLE hThread; char szMsg[80]; hThread = CreateThread( NULL, // default security attributes 0, // use default stack size ThreadFunc, // thread function &dwThrdParam, // argument to thread function 0, // use default creation flags &dwThreadId); // returns the thread identifier // Check the return value for success. if (hThread == NULL) { wsprintf( szMsg, "CreateThread failed." ); MessageBox( NULL, szMsg, "main", MB_OK ); } else { _getch(); CloseHandle( hThread ); }} to pkizhang(张无忌), 做人要厚道,楼主肯定是初学者,你搞什么POSIX的线程库,可能楼主3~5年内都不会接触到! 回复人: zg351229063(zgcrzg) ( ) 信誉:100 2005-08-31 21:09:00 得分: 0 借贵宝地问一下,请问,怎么提问啊?-------------------------------看 C 版的发贴须知,新手必读 ..楼主的问题呢,需要系统的学习才行, 我也建议看 <<win32多线程程序设计>> ! 多线程的看MSDN吧,pthread在Linux和Win32下都有库,但是不是很好。最后是使用CWinThread这样的面向对象的类,有助于线程的使用。它很像java的Thread。 windows 核心编程 很经典的书再去 www.vckbase.com 下载一些代码例子 自己体会体会。 推荐看老侯的《Win32 多线程程序设计》1。知道怎么起1个线程,然后怎么起多个就跟起1个一样2。同步控制 打开图片的时候出现ASSERT(m_hObject == NULL) 求助:2D饼状图 关于vc内嵌汇编 一直以来未解决的问题 各位帮忙看看 某公司的技术支持人员报销规定 教科书上的例子,运行不起来,不知是程序错误还是我的VC装的不好 完成端口的收发 用EVC编好后的程序,怎么运行? 关于CString的一个问题 请问:如何刷新局部区域? 一个绝对简单的问题,怎么知道文件的大小? 如何获得文本框中光标所在处的屏幕坐标 那如何得到鼠标是否有滑轮?滑轮消息是啥?
你通了一种,那另一种也就是形势上的差别而已了.
偶不懂linux,可能说错了.还请原谅.
可以参考一下Charles Petzold编写的《windows程序设计》的
多任务和多线程那一章~
pthread_cancel() 取消线程
#include <conio.h>DWORD WINAPI ThreadFunc( LPVOID lpParam )
{
char szMsg[80]; wsprintf( szMsg, "Parameter = %d.", *(DWORD*)lpParam );
MessageBox( NULL, szMsg, "ThreadFunc", MB_OK ); return 0;
}
VOID main( VOID )
{
DWORD dwThreadId, dwThrdParam = 1;
HANDLE hThread;
char szMsg[80]; hThread = CreateThread(
NULL, // default security attributes
0, // use default stack size
ThreadFunc, // thread function
&dwThrdParam, // argument to thread function
0, // use default creation flags
&dwThreadId); // returns the thread identifier
// Check the return value for success.
if (hThread == NULL)
{
wsprintf( szMsg, "CreateThread failed." );
MessageBox( NULL, szMsg, "main", MB_OK );
}
else
{
_getch();
CloseHandle( hThread );
}
}
借贵宝地问一下,请问,怎么提问啊?
-------------------------------
看 C 版的发贴须知,新手必读 ..
楼主的问题呢,需要系统的学习才行, 我也建议看 <<win32多线程程序设计>> !
1。知道怎么起1个线程,然后怎么起多个就跟起1个一样
2。同步控制