持之以恒

导航

DBI && MySQL lock

DBI: url

set isolation to dirty read

 

my $npmdb_dbh = DBI->connect("DBI:ODBC:npmdb", "informix","*******",{RaiseError=>0,PrintError=>0});
my $gisdb_dbh = DBI->connect("DBI:Oracle:gisdb", "gis","*******",{RaiseError=>1,AutoCommit=>0});

$npmdb_dbh->do("set isolation to dirty read");    
               
my $sel_sql = " select a.first_result,a.ne_id,
                            NVL(CSTRAFFIC_CONV11,0),

                            round(SFB_DIVFLOAT_1(NVL(b.ATTOUTPSUTRAN,0)-NVL(b.FAILOUTPSUTRAN,0),NVL(b.ATTOUTPSUTRAN,0),0,0)*100,2)

                            from tpc_utrancell_ne a ,TPC_UTRANCELL_HO_NE b,TPC_UTRANCELL_HSPA_NE c
                                    
                            where  a.first_result =  current year to hour - $para units hour ||':00:00'
                            and a.first_result = b.first_result
                            and a.first_result = c.first_result
                            and a.ne_id = b.ne_id
                            and a.ne_id = c.ne_id
";
                         
   
my $rsite = $npmdb_dbh->prepare($sel_sql);
    
$rsite->execute();
    
my $ref_data = $rsite->fetchall_arrayref();
    
$rsite->finish;
    
$gisdb_dbh->do("delete from BTS_PM_TD where first_result <= sysdate - 74/24");

    $gisdb_dbh->do("commit");
    
$npmdb_dbh->disconnect();
    
$gisdb_dbh->disconnect();

 

1,Pthread线程控制

int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*stat_rtn)(void*), void *restrict arg);
int pthread_exit(void *status);
int pthread_cancel(pthread_t thread);
int pthread_join(pthread_t tid, void **tret);
int pthread_cleanup_push(void (*rtn)(void*), void *arg);
int pthread_clean_pop(int execute);
int pthread_equal(pthread_t tid1, pthread_t tid2);
pthread_t pthread_self(void);

 

2,Pthread提供多种同步机制:
1) Mutex(互斥量):pthread_mutex_xxx
2) Condition Variable(条件变量):pthread_con_xxx
3) Read/Write lock(读写锁):pthread_rwlock_xxx
4) Spin lock(自旋锁):pthread_spin_xxx

int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); // PTHREAD_MUTEX_INITIALIZER
int pthread_mutex_destroy(pthread_mutex_t *mutex);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);

int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr);
int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);
int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);

int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);
int pthread_cond_destroy(pthread_cond_t *cond);
int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);
int pthread_cond_timedwait(pthread_cond_t *restict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime);
int pthread_cond_signal(pthread_cond_t *restrict cond);
int pthread_cond_broadcast(pthread_cond_t *restrict cond);

int pthread_spin_init(pthread_spinlock_t *lock, int pshared);
int pthread_spin_destroy(pthread_spinlock_t *lock);
int pthread_spin_lock(pthread_spinlock_t *lock);
int pthread_spin_trylock(pthread_spinlock_t *lock);

posted on 2014-02-08 22:39  beilei  阅读(191)  评论(0编辑  收藏  举报