线程
来源:互联网 发布:阿里云服务器压力测试 编辑:程序博客网 时间:2024/05/29 07:08
#define MAX 100
typedef struct INFO
{
int integer;
char structstr[MAX];
}info;
void ThreadSendInteger(int myint);
void ThreadSendStruct(LPVOID lpParameter);
void ThreadMax();
///////////////////////////////////////////////////////////////
HCURSOR CThreadParamSendDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
/************************************************************************/
/* 起线程,传递整数过去
/************************************************************************/
void CThreadParamSendDlg::OnSendinteger()
{
UpdateData();
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadSendInteger, (void*)m_iThreadSend, 0, 0);
}
/************************************************************************/
/* 传递整数的线程响应函数
/************************************************************************/
void ThreadSendInteger(int myint)
{
CTime interval;
interval = CTime::GetCurrentTime();
CString tem;
for(int i = 0; i<=myint; i++)
{
::SetDlgItemInt(AfxGetMainWnd()->m_hWnd, IDE_THREADDISPLAY, i, TRUE);
Sleep(1000);
}
AfxMessageBox("线程运行完毕");
}
/************************************************************************/
/* 传递结构体的线程响应函数
/***********************************************************************/
void ThreadSendStruct(LPVOID lpParameter)
{
info *infomation = (info *)lpParameter;
CString str;
str.Format("结构体内容为整数%d和字符串%s", infomation->integer, infomation->structstr);
AfxMessageBox(str);
}
/************************************************************************/
/* 传递结构体到线程中
/************************************************************************/
void CThreadParamSendDlg::OnSendstruct()
{
UpdateData();
//结构体赋值
info infomation;
infomation.integer = m_iInteger;
strcpy(infomation.structstr, m_string);
//起线程
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadSendStruct, (void*)&infomation, 0, 0);
}
/************************************************************************/
/* 测试本机最多能创建多少个线程
/************************************************************************/
void CThreadParamSendDlg::OnTestnum()
{
GetDlgItem(IDB_TESTNUM)->EnableWindow(FALSE);
m_iNUm = 0;
while(g_bCreate)
{
if(CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadMax, NULL, 0, 0)==NULL)
{
g_bCreate = FALSE;
break;
}
else
{
m_iNUm++;
}
}
Sleep(3000);
UpdateData(FALSE);
GetDlgItem(IDB_TESTNUM)->EnableWindow(TRUE);
}
/************************************************************************/
/* 响应最多能创建的线程
/************************************************************************/
void ThreadMax()
{
while(g_bCreate)
{
Sleep(3000);
}
}
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 世界各个国家及其国家代码
- 如果不用MFC,直接使用API写一个Windows程序,需哪些步骤?MFC是怎么做到菜单点击后,响应对应的代码的?
- Section 4.1 Beef McNuggets
- Postfix+Amavisd+Clam+Spamd
- CentOS LAMP环境搭建和测试php与mysql的连接
- 线程
- 最简单的glut opengl程序
- 线程2
- hadoop 文件夹嵌套赋权限
- sqlserver2005使用convert转换日期[资料]
- 链表
- 影响Lucene索引速度原因以及提高索引速度技巧(收集)
- 如何在java中调用js方法
- 学习STL