社区
C语言
帖子详情
如何用C实现线程间的数据通讯?
yjukh
2008-02-19 11:55:21
如果是普通对象,到可以正常读写。
但若在主线程中动态创建了一个数组,在子线程中却不能访问,有没有比较好的方法?
我是用CVI做的,C语言。
...全文
796
9
打赏
收藏
如何用C实现线程间的数据通讯?
如果是普通对象,到可以正常读写。 但若在主线程中动态创建了一个数组,在子线程中却不能访问,有没有比较好的方法? 我是用CVI做的,C语言。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Chappell
2008-02-21
打赏
举报
回复
#include "stdafx.h"
#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()
{
DWORD dwThreadId, dwThrdParam = 1;
HANDLE hThread;
char szMsg[80];
hThread = CreateThread(
NULL, // no 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 );
}
}
Jim_King_2000
2008-02-21
打赏
举报
回复
================================================================================
但若在主线程中动态创建了一个数组,在子线程中却不能访问
================================================================================
不会的。只要是一个进程内的东东,都是可以访问的。你可以在创建子线程的时候把这个指针传递给子线程,或者发消息给子线程也可以。
独孤过儿
2008-02-21
打赏
举报
回复
IPC问题...
楼主去google,关键字是“进程间通信 方式”...
xxmv99
2008-02-21
打赏
举报
回复
看来用3L的2,3可以实现
yjukh
2008-02-20
打赏
举报
回复
上面的方法好像不行,
我是想在 主线程中声明并动态创建一个空间
让子线程去更新该空间的数据
wisdosoft
2008-02-19
打赏
举报
回复
主线程动态创建的变量,在自己的堆栈空间,字线程很难访问,需使用全局数组。
另外就是使用WM_COPYDATA消息拷贝变量供子进程使用,但要密切注意线程间的同步。
erwin1984
2008-02-19
打赏
举报
回复
作为参数传入子线程或者做为全局变量吧。
missilery
2008-02-19
打赏
举报
回复
向线程发送消息
PostThreadMessage
lala_benben
2008-02-19
打赏
举报
回复
1。主线程把数据作为参数传递给子线程
2。开辟共享内存。。
3。使用全局变量
Qt项目实例_02_Qt
线程
间
数据通讯
及数据共享(
线程
间
共享数据方法:共享内存;信号槽机制;共享类指针 )
在使用QT做项目开发过程中,经常会用到多
线程
,比如图像采集一个
线程
,图像处理一个
线程
、
数据通讯
一个
线程
。1.使用共享内存;即两个
线程
都能够共享的变量(全局变量),这样两个
线程
都能够访问和修改变量,从而达到共享目的;2.使用信号槽机制,将数据从一个
线程
传递到另外一个
线程
3.共享类指针来进行访问不同类的变量和函数;目前我用到的就是第二种方法,原笔者推荐使用第三种方法,下篇将会以信号槽的方式
实现
线程
间
数据共享以及如何在子
线程
使用定时器。
java
线程
案例synchronized和Lock解决消费者和生产者问题,解决多
线程
之
间
的
数据通讯
问题
消费者和生产者问题: 生产者:生产数据。将数据传递到共享资源对象。 共享资源对象:获取到生产者生产的数据,将数据提供给消费者。 消费者:拿到共享资源对象中的数据。 synchronized 方式: package theadDemo; /** *
线程
的通信(生产者和消费者)共享资源,使用
实现
接口的方式,生产和消费同时进行;使用一个或者多个
线程
表示生产者P,使用一个或者...
CC++ 用 pthread 进行多
线程
开发
它的作用是挂起当前的
线程
,等待指定的
线程
运行完毕。作为一个程序员,不管你用的开发语言是 C、C++、Java、Python 或者其它,你总会需要处理多任务。上面是 C 的代码,其实 C++ 也同样适用,只不过需要用 g++ 编译器来编译代码。在
线程
创建的时候给子
线程
传递了它的名字,然后在
线程
的运行函数中进行了强制转换。多
线程
是
实现
多任务处理的一种最常用的手段,
线程
相比进程而言显得轻量级。第四个参数也是一个指针,它是用来将数据传递进
线程
的运行函数。第三个参数是
线程
运行时的函数,这是个函数指针。
MFC多
线程
笔记
一.在MFC中创建一个用户界面
线程
1.从CWinThread派生一个
线程
类CMyThread重载CMyThread的InitInstance(),ExitInstance()BOOL CMyThread::InitInstance(){ // Do what you want to do PostThreadMessage(WM_QUIT,0,0); return TR
[C/C++
线程
安全]_[中级]_[如何取消
线程
和停止
线程
]
场景 在开发多
线程
程序时,经常由于需要重新执行任务从而取消(停止)工作
线程
。C++11目前并没有很好的取消
线程
执行的机制。那么我们应该如何
实现
取消
线程
呢? 说明 C++11使用<future>库进行
线程
间
数据通讯
,也可以利用它来进行控制
线程
停止。但是没有pthread那么强大,pthread有取消点函数,
线程
执行到取消点函数就会判断如何
线程
状态设置为取消,那么就会调用预先设定的
线程
清理函数清理资源,而取消点之后的代码块不会执行。而C++11并没有取消点的设计。只有在工作
线程
里判断某个值如
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章