BBS水木清华站∶精华区

发信人: zpp (little), 信区: Unix        
标  题: 多线程与面向对象 
发信站: BBS 水木清华站 (Thu Jun 15 16:27:44 2000) 
 
   多线程与面向对象之间是不是有所约束?不用对象设计 
的运行很好的多线程程序,改用对象设计却出现了意想不 
到的错误。多线程函数是一个对象的方法,在运行中,对 
该对象的私有变量赋值时总是总线错误,即使加了锁也不 
行,这就是约束吗? 
 
   初次用多线程编程,还请多多指教。 
 
谢谢 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.60] 
发信人: mafie (浪人~人面桃花), 信区: Unix        
标  题: Re: 多线程与面向对象 
发信站: BBS 水木清华站 (Thu Jun 15 16:28:34 2000) 
 
【 在 zpp (little) 的大作中提到: 】 
    多线程与面向对象之间是不是有所约束?不用对象设计 
 的运行很好的多线程程序,改用对象设计却出现了意想不 
 到的错误。多线程函数是一个对象的方法,在运行中,对 
 该对象的私有变量赋值时总是总线错误,即使加了锁也不 
 行,这就是约束吗? 
    初次用多线程编程,还请多多指教。 
 谢谢 
 
        看糊涂了,不懂 
        那位牛人解释一把 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: coco.cic.tsingh] 
发信人: zpp (little), 信区: Unix        
标  题: Re: 多线程与面向对象 
发信站: BBS 水木清华站 (Thu Jun 15 16:39:39 2000) 
 
真抱歉,我说得不够清楚。 
我的问题等会儿再说,只先从大的方面说。 
 
有没有人用多线程和面向对象编过程? 
比如,在一个对象A的一个方法method1中创建线程,调用的函数是 
该对象的另一个方法method2,在method2中要对私有变量修改,可以 
先用锁进行锁定。请问这样可以吗? 
 
【 在 mafie (浪人~人面桃花) 的大作中提到: 】 
         看糊涂了,不懂 
         那位牛人解释一把 
 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.99.60] 
发信人: KCN (毒中之毒~想), 信区: Unix        
标  题: Re: 多线程与面向对象 
发信站: BBS 水木清华站 (Thu Jun 15 17:22:00 2000) 
 
【 在 mafie (浪人~人面桃花) 的大作中提到: 】 
         看糊涂了,不懂 
         那位牛人解释一把 
 
对了,有没有glibc中线程安全的函数表 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.10.127] 
发信人: VisualC (不学VC★打倒北约), 信区: Unix 
标  题: Re: 多线程与面向对象 
发信站: BBS 水木清华站 (Thu Jun 15 18:12:28 2000) WWW-POST 
 
【 在 zpp (little) 的大作中提到: 】 
 真抱歉,我说得不够清楚。 
 我的问题等会儿再说,只先从大的方面说。 
 有没有人用多线程和面向对象编过程? 
 比如,在一个对象A的一个方法method1中创建线程,调用的函数是 
 该对象的另一个方法method2,在method2中要对私有变量修改,可以 
这个method2应该是个静态函数才行吧。。 
 
 先用锁进行锁定。请问这样可以吗? 
 
应该说,面向对象与多线程是不冲突的,因为我曾经见过不少用C++实现 
的多线程LIB,而且我的朋友也有用C++写多线程程序的,但我还是习惯 
用C写。 
 
另外你是在什么环境下写的? 
 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 162.105.207.199]  
发信人: snag (一天到晚游泳的鱼), 信区: Unix        
标  题: Re: 多线程与面向对象 
发信站: BBS 水木清华站 (Thu Jun 15 19:27:55 2000) 
 
偶一直是多线程和和面向对象的编程的热衷者 
因为有的编译器不支持不同类型的函数强制转换 
(例如WINDOWS下vc就不支持的说) 
我一般的方法是 
定义一个友元函数 
由友元函数调用对象的方法 
如  
class CA 

   friend void *threadproc(void *) 
   int fthread(); 
   int f1() { pthread_create(...this,threadproc..} 
 } 
 
void *threadproc(void *p) 

  CA *pA=(CA *)p; 
  p->fthread(); 
  return NULL; 

 
如果同一个对象的不同线程可能同时对同一个私有变量进行赋值 
就必须进行互斥 
unix下有pthread_mutex,ipc的机制可能不行 
windows下又mutex,critical section等 
 
【 在 zpp (little) 的大作中提到: 】 
    多线程与面向对象之间是不是有所约束?不用对象设计 
 的运行很好的多线程程序,改用对象设计却出现了意想不 
 到的错误。多线程函数是一个对象的方法,在运行中,对 
 该对象的私有变量赋值时总是总线错误,即使加了锁也不 
 行,这就是约束吗? 
    初次用多线程编程,还请多多指教。 
 谢谢 
 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.101.249] 
发信人: mafie (浪人~人面桃花), 信区: Unix        
标  题: Re: 多线程与面向对象 
发信站: BBS 水木清华站 (Thu Jun 15 23:36:10 2000) 
 
【 在 KCN (毒中之毒~想) 的大作中提到: 】 
 对了,有没有glibc中线程安全的函数表 
 
        这个时和系统实现相关的 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.173.63] 

BBS水木清华站∶精华区