การใช้ semaphore lock function

2009-12-09 / C/C++, Computer, Programming / 7 Comments

วันนี้ทำงาน แล้วติดปัญหา ผมมี function นึงซึ่งใช้ในการจัดการ  Linked-List
ซึ่ง linked-list ตัวนี้ถูกประกาศเป็น global
และโปรแกรมที่ผมทำนั้น การทำงานถูกแยกเป็น thread
ดังนั้นโอกาสที่ จะมีการ access Linked-list ตัวนี้ก็มีสูง

ลูกพี่ผมก็แนะนำให้ใช้ semaphore lock โดยขณะที่ มี เธรดไหนทำอยู่ก็ให้ lock ไว้ก่อน
โดย syntax ที่ใช้มีดังนี้

#include <semaphore.h>    <—- Include

sem_t      mutex;   <— mutext variable

sem_wait(&mutex);   <—- Lock

sem_post(&mutex);  <—- Unlock

แต่ก่อนจะใช้ ต้อง Init ก่อนนะครับ

sem_init(&mutex, 0, 1);

เช่น

int editData()

{

sem_wait(&mutex);

A++;

sem_post(&mutex);

return A;

}

ข้อสำคัญคือ ต้อง Unlock ก่อนที่จะ Return นะครับ

ปล. ตอน compile ต้อง -lposix4 ด้วยนะครับ ^^

Read More

การทำ sub string ใน Oracle

2009-12-04 / Computer, Programming, SQL/Database / 2 Comments

ในกรณีที่เราต้อง การ Select ข้อมูลบางอย่างอาจจะไม่ต้องการหมด เช่นต้องการ Query เบอร์โทรศัพท์ แล้วไม่ต้องการเอา 4 ตัวท้ายมา

เช่นเบอร์เป็น 086617xxxx เราก็สามารถให้ Oracle ทำให้แทนได้ (CPU เค้าแรง Ram เค้าเยอะ อิอิ)

SELECT CONCAT(SUBSTR(MOBILE_NUMBER,1,6) ,’XXXX’ ) AS MOBILE_XX FROM MOBILE

โดยในการทำ Sub String นั้นเราจะใช้ SUBSTR(Feild,Start Index,Length) ก็คล้าย กับใน C หรือ VB
และจากตัวอย่างได้ใช้ CONCAT มาเพื่อต่อ String ที่เราต้องการ CONCAT(StringA,StringB)  ^^

อ้างอิง : http://www.psoug.org/reference/string_func.html

Read More