您的位置:程序门 -> c/c++ -> c++ 语言



c++类中定义的变量在多线程的各个线程中是共享还是会为每个单独创建呢


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


c++类中定义的变量在多线程的各个线程中是共享还是会为每个单独创建呢[已结贴,结贴人:zhongyj2004]
发表于:2007-05-17 11:03:49 楼主
rt
发表于:2007-05-17 11:05:351楼 得分:10
两个线程使用一个类对象的时候是   共享的.
发表于:2007-05-17 11:09:022楼 得分:0
和类外定义的变量,相同。
发表于:2007-05-17 11:16:043楼 得分:0
经常看到一个词 '加锁 ',这个到底是怎么个意思呢,对变量还是什么有影响呢
发表于:2007-05-17 11:20:044楼 得分:10
加锁就是只允许同一时刻只允许一个线程来访问这个变量.
发表于:2007-05-17 11:22:035楼 得分:0
加锁为了同步,临界区的使用,便是一个加锁的例程
发表于:2007-05-17 11:45:306楼 得分:0
我们有下面一个一个lock.h
#ifndef   lock_h
#define   lock_h

#include   <pthread.h>

class   lock
{
public:
        lock();

        ~lock();

        void   lock();

        void   unlock();

private:
        pthread_mutex_t     _section;
};

inline   lock::lock()
{
        pthread_mutex_init(&_section,   null);
}

inline   lock::~lock()
{
        pthread_mutex_destroy(&_section);
}

inline   void   lock::lock()
{
        pthread_mutex_lock(&_section);
}

inline   void   lock::unlock()
{
        pthread_mutex_unlock(&_section);
}

然后再另一个类中,比如
class   a
{
public:
        fun();
private:
        lock   *loglock;
        int   a;
}

a::fun()
{
        loglock-> lock();
        file   *fp   =   fopen( "file.txt ",   "a ");
        ......
        loglock-> unlock();
}
那么当一个a的对象执行到a::fun()时,如果是都线程,该类的其他线程对i和fp指向的文件还能访问吗?
其他的进程还能访问fp指向的文件吗


快速检索

最新资讯
热门点击