VC++多线程多个参数传递时,根据LPVOID可以传任意参数地址,所以多参数传递可以将参数变为类、数组、结构体,然后把这些数据类型的地址传递进去。因为传的是地址,所以实现线程函数里、外参数可持续互换。

typedef struct _S_Test
{int iNum;char caWords[50];CString csItem;
}S_Test;DWORD WINAPI ThreadFun2(LPVOID lpParam)
{cout << "Welcome to ThreadFun2." << endl;S_Test *pstTestItem = (S_Test*)lpParam;  //类型转换,无论什么类型都可以通过这种方式转换后使用cout << pstTestItem->iNum << endl;cout << pstTestItem->caWords << endl;cout << (LPCTSTR)pstTestItem->csItem << endl;pstTestItem->iNum = 20;pstTestItem->csItem = "你好新世界";memset(pstTestItem->caWords,0,sizeof(pstTestItem->caWords));strncpy(pstTestItem->caWords, "The World had been changed!", sizeof(pstTestItem->caWords) - 1);return 0;
}int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{int nRetCode = 0;// initialize MFC and print and error on failureif (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){// TODO: change error code to suit your needscerr << _T("Fatal Error: MFC initialization failed") << endl;nRetCode = 1;}else{// TODO: code your application's behavior here.cout << "Welcome to main." << endl;S_Test stTestItem;stTestItem.iNum = 10;memset(stTestItem.caWords,0,sizeof(stTestItem.caWords));strncpy(stTestItem.caWords, "Hello World!", sizeof(stTestItem.caWords) - 1);stTestItem.csItem.Format("欢迎");cout << stTestItem.iNum << endl;cout << stTestItem.caWords << endl;cout << (LPCTSTR)stTestItem.csItem << endl;HANDLE handle = CreateThread(NULL, 0, ThreadFun2, &stTestItem, 0, NULL);  //第4个参数为你需要的入参的地址Sleep(10);  //等线程起来,必须有的cout << "*********************************" << endl;cout << stTestItem.iNum << endl;cout << stTestItem.caWords << endl;cout << (LPCTSTR)stTestItem.csItem << endl;CloseHandle(handle);}return nRetCode;
}

VC++多线程多个参数传递相关推荐

  1. VC++多线程全面讲解

    使用 Spy++ 工具查看系统中当前的进程与线程! 1.创建新线程的三种方式: 方式一:CreateThread(记得关闭线程句柄) 使用情况:无MFC时使用. 方式二:AfxBeginThread( ...

  2. c语言如何实现多线程VC,vc多线程(c++多线程)

    VC多线程是什么意思?能讲通俗点吗? 通俗点说就是你老板让你把山上的树做成板材你一看,工作量大,于是你派出的兄弟们(这就是多线程)一起上大家一起,有的砍树,有的搬运,有的做板材,(即不同的. MFC中 ...

  3. VC++多线程封装类(附源码)

      VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第9章:VC++多线程封装类(附源码) 源代码demo已上传到百度网盘:永久生效  ,代码封装了 创建线程.挂起线程.恢复线程. 等待 ...

  4. VC++多线程编程[转]

    2019独角兽企业重金招聘Python工程师标准>>> VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好. 一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对 ...

  5. 《转》VC++多线程编程

    原地址:http://www.cnblogs.com/wxfasdic/archive/2010/09/23/1833522.html 留个纪念,不错的总结.十个例子清晰列举啦多线程编程的奥妙.  V ...

  6. VC多线程编程(转)

    VC中多线程使用比较广泛而且实用,在网上看到的教程.感觉写的挺好. 一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETH ...

  7. (转)VC++多线程编程

    一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX ...

  8. MFC VC++多线程间通信

    线程间的通信 1.线程之间的通信简介 一般而言,在一个应用程序中(即进程),一个线程往往不是孤立存在的,常常需要和其它线程通信,以执行特定的任务.如主线程和次线程,次线程与次线程,工作线程和用户界面线 ...

  9. c语言如何实现多线程VC,多线程技术在VC中的应用

    山东理工大学 贾永新 肖爱梅 Visual C++ 6.0 自发布以来,以其强大的功能及各种新特性受到广大编程爱好者的青睐.但是要想成为一个优秀的程序员,写出真正功能强大.能够快速响应且实用的程序就必 ...

最新文章

  1. IIS 网站服务器性能优化指南
  2. yii2 mysql between_yii2:多条件多where条件下碰到between时,between语句如何处理呢?
  3. 利用 Node.js 实现 SAP Hana 数据库编程接口
  4. 如何基于 DDD 构建微服务?
  5. 浅析 Linux 初始化 init 系统,第 2 部分: UpStart
  6. 苹果公司官方证实,iPhone12延期!
  7. 序列化_SpreadJS序列化与反序列化表格Serialization+Deserialization
  8. 自己动手破解斯凯Mrp游戏
  9. 谷歌生物医学专用翻译_【小虎聊干货】八大翻译软件大揭秘,告诉你科研翻译的正确打开方式...
  10. 计算机对写字教学的冲淡,不断改进评价方法努力促进写字教学
  11. php iis7.5_浅析iis7.5安装配置php环境
  12. 分享: Vue微信浏览器ios音乐自动播放
  13. ThinkPhp6+Vue+ElementUI前后端分离在线教程
  14. 轻快PDF阅读器怎么阅读电子书
  15. VM虚拟机安装CentOS系统的常见BUG
  16. 编程逻辑入门必备2:归纳推理
  17. 计算机视觉未来的挑战,搜狗斩获ICPR 2020人脸关键点检测挑战赛冠军 计算机视觉技术持续领先...
  18. 移动WEB开发之响应式布局--Bootstrap栅格系统
  19. 文本特征提取——one-hot
  20. ZYNQ中裸机开发和Linux开发有什么区别?

热门文章

  1. 美国东北大学计算机科学硕士,2021年美国东北大学计算机研究生专业有哪些?入学要求高吗?...
  2. 飞翎OK6410开发板sd_writer烧录不进SD卡的若干问题的解决方案
  3. 浅谈测试的意义和方法
  4. 通过提高冷却效率削减数据中心能源成本的五大战略
  5. 【数据压缩】MPEG音频编码实验
  6. Json格式与解析(一)
  7. 基于AList实现网盘挂载和WebDAV本地挂载网盘
  8. Java世界里的四大名著(Java程序员必看书籍)
  9. matlab/simulink仿真-电池补偿低频充放电+超级电容补偿高频充放电
  10. 【转载翻译】tensorflow中样离线使用tf hub中的模型