社区
C++ 语言
帖子详情
多线程中,可以同时访问一个对象的两个成员函数吗?
yueyucanyang
2008-12-07 03:12:28
在windows xp下VC6.0环境,假设有一个类A有两个成员函数func1(),func2()。启动了两个线程,将外部定义的一个对象A *a作为线程参数,请问,允许在线程1里访问a.func1()时,线程2在访问a.func2()吗?
...全文
387
13
打赏
收藏
多线程中,可以同时访问一个对象的两个成员函数吗?
在windows xp下VC6.0环境,假设有一个类A有两个成员函数func1(),func2()。启动了两个线程,将外部定义的一个对象A *a作为线程参数,请问,允许在线程1里访问a.func1()时,线程2在访问a.func2()吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
薛定谔之死猫
2008-12-09
打赏
举报
回复
没问题,关键是对成员变量的操作需要提供线程安全的方法
jackzhhuang
2008-12-09
打赏
举报
回复
理论上可以,实际最好不要这么做,即使没有冲突,万一以后修改、扩展有冲突了,而自己有没有察觉,就麻烦了。
可以封装得更细点,或者改变策略。
cruxsky
2008-12-09
打赏
举报
回复
mark
sad_4978
2008-12-09
打赏
举报
回复
这样操作是可以的。但是有一点要注意a.func1()和a.func2()函数中如果对同一个变量进行了操作,要注意控制这个变量的原子访问。
SearchLife
2008-12-09
打赏
举报
回复
学习
candyice
2008-12-09
打赏
举报
回复
可以,但是存在资源竞争的话,就得做同步处理了
zenny_chen
2008-12-09
打赏
举报
回复
[Quote=引用 3 楼 rookieme 的回复:]
当然可以,成员函数都得static
[/Quote]
成员函数不是static的,而是external的;即使是类函数(即类中的static函数)对于全局而言也是external的。
[Quote=引用 11 楼 jackzhhuang 的回复:]
理论上可以,实际最好不要这么做,即使没有冲突,万一以后修改、扩展有冲突了,而自己有没有察觉,就麻烦了。
可以封装得更细点,或者改变策略。
[/Quote]
如果func1与func2作为相互协作线程进行同时调用的话也完全可以,这尤其适用于多核处理器。
hongzao
2008-12-07
打赏
举报
回复
当然可以,不过如果那两个函数涉及到修改对象的状态(也就是会修改对象的内部的变量),那么就需要做同步处理.
zy1691
2008-12-07
打赏
举报
回复
肯定可以,但是操作相同或者相关的数据得记得同步
tanglongfeifei
2008-12-07
打赏
举报
回复
类的函数是属于类的,不是属于特定的对象而类的数据成员是属于特定的对象。
因此如果这个类的两个函数相不相干(即没对相同的变量进行操纵),就不需要进行线程同步。
否则就需要进行线程同步,如使用临界区...
rookieme
2008-12-07
打赏
举报
回复
当然可以,成员函数都得static
qqwx_1986
2008-12-07
打赏
举报
回复
当然可以 如果两个成员函数对成员变量的操作没有冲突,就放心用
如果有冲突,比一个对成员变量写,而另一个对同一个变量读,
这时你就要考虑同步的问题
sys0006
2008-12-07
打赏
举报
回复
如果你的两个成员函数没有对成员变量等进行操作是可以的,否则就得做同步处理。
JAVA
多线程
精讲下
本课程是《零基础学Java》系列课程
中
的
多线程
相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你可以深刻理解Java
多线程
的原理及实现运行机制,深刻学习
多线程
的生命周期、调度、控制等内容。
多线程
精讲下课程内容涵盖如下:l 线程的同步(线程安全问题)l 线程的死锁l 线程间通信l 线程组l 线程池l
多线程
的第三种实现方案l 匿名内部类方式使用
多线程
l 定时器的使用l
多线程
面试题
类
成员函数
作为线程函数使用
类
成员函数
作为线程函数使用 C++类
成员函数
使用时,都会隐式传递
一个
this指针给该函数,this指针指向该类的
对象
。函数体可以通过显示调用该指针或直接
访问
类内成员。 回调函数是用指针来调用的函数,最常使用的回调函数就是在创建线程时,以
一个
函数指针以及传递给这个函数多个参数来调用线程函数来创建线程。那么一般的类
成员函数
是不能用作回调函数的,因为库函数在使用回调函数时,都会传递指定的符合回调函数
一个
函数能否被
两个
线程同时调用的问题
一个
函数能否被
两个
线程同时调用 其实你可以这样想,函数本身只是代码,代码是只读的,无论多少个线程同时调都无所谓(因为只读嘛)。但是函数里面总要用到数据,如果数据属于线程(比如函数参数、局部变量,存在栈上,每个线程都有自己的栈),那么同时调还是没关系,因为用的本线程的数据;但是如果用了一些全局数据,比如全局变量,同时操作
一个
数据结构(如对
一个
链表有什么操作),那就不行了,这时候锁就出来了。 ...
C/C++编程:当析构函数遇上
多线程
C++要求程序员自己管理
对象
的声明周期,这在
多线程
情况下可能会造成麻烦。当
一个
对象
能被多个线程同时看到时,那么
对象
的销毁时机就会变得模糊不清,可能会出现多竞态条件: 当即将析构
一个
对象
时,从何而知此刻是否有别的线程正在执行该
对象
的
成员函数
如何保证在执行
成员函数
期间
对象
不会被另
一个
线程被析构 在调用某个
对象
的
成员函数
之前,如何得知这个
对象
还活着?它的析构函数会不会碰巧执行到一半 解决这些race condition是C++编程面临的基本问题。本文试图以shared_ptr一劳永逸的解决这些问题,减轻C+
c++
中
多个线程使用同
一个
函数
我是小白,最近在学习实现
一个
简单的线程池,线程池
中
维护了
一个
存放线程的数组以及
一个
任务队列。在创建线程池(构造函数
中
)时创建若干个线程,起始时由于任务队列
中
没有任务,创建的每
一个
线程都处于阻塞状态。使用pthread_create函数创建线程时把所有的线程与同
一个
函数关联在一起,也就是产生如下的代码: pthread_t p[5]; //线程池
中
有5个线程 for(int i = 0; i
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章