카테고리 없음

Thread에서 사용할수 있는 Data들(동기화). Array, Queue, Stack

써드아이 2008. 2. 6. 21:44

[출처]
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=278&MAEULNo=20&no=16605&ref=16605




Thread에서 사용할수 있는 Data들(동기화). Array, Queue, Stack


 Thread에서 이런 Data들을 사용할 경우 일일이 동기화하는 불편때문에 한번 만들어 봤습니다.

Array,Queue,Stack은 STL을 사용해서 만들었습니다.

클래스는

Array: CSyncArray, CSyncArrayPtr(data가 Pointer일때 사용, 메모리를 free시키기 위해 만들었습니다)

Queue: CSyncQueue, CSyncQueuePtr

Stack: CSyncStack, CSyncStackPtr

들입니다.


사용방법은 이 Header file을 Include하고.

예를들어.

#include "SyncDataType. h "

CSyncQueue<byte> Queue;

Queue.Push(3);

...


이런식으로 사용하면 됩니다.

사용해보시고 이상한 점있으면 알려주십시오.

그럼...많은 테스트 부탁드립니다.



 
 
 스레드간 핸들링을 위해 세마포어와 함께 크리트컬 섹션을 이용했더라면 더 좋은 소스가 될거 같습니다..
 그리고...각각의 큐의 한동작 동작에...크리티컬 색션을 두는것보단..큐포인터에만..크리티컬 섹션을 두는게..
 더 효율적일거 같습니다.


%%
critical section 부분만 mutex 정도로 고치면 linux에서도 멋지게 돌지 않을까???