Changeset 18751
- Timestamp:
- Jul 27, 2008, 7:59:42 AM (18 years ago)
- Location:
- branches/eam_branch_20080719/psLib/src/sys
- Files:
-
- 2 edited
-
psThread.c (modified) (4 diffs)
-
psThread.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20080719/psLib/src/sys/psThread.c
r18749 r18751 17 17 18 18 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 19 static psList *queue = NULL; // queue of pending jobs 19 static psList *pending = NULL; // queue of pending jobs 20 static psList *done = NULL; // queue of done jobs 21 20 22 static psArray *pool = NULL; // array of defined threads 21 23 … … 50 52 } 51 53 52 // add a job to the queue of activejobs53 bool psThreadJobAdd ToQueue(psThreadJob *job) {54 // add a job to the queue of pending jobs 55 bool psThreadJobAddPending (psThreadJob *job) { 54 56 55 57 psThreadLock (); 56 if ( queue== NULL) {57 queue= psListAlloc(NULL);58 if (pending == NULL) { 59 pending = psListAlloc(NULL); 58 60 } 59 61 60 psListAdd ( queue, PS_LIST_TAIL, job);62 psListAdd (pending, PS_LIST_TAIL, job); 61 63 psThreadUnlock (); 62 64 return true; … … 64 66 65 67 // this function is not locked -- see thread launder for example 66 psThreadJob *psThreadJobGet () {68 psThreadJob *psThreadJobGetPending () { 67 69 68 psThreadJob *job = psListGetAndRemove (queue, PS_LIST_HEAD); 70 if (!pending) return NULL; 71 72 psThreadJob *job = psListGetAndRemove (pending, PS_LIST_HEAD); 73 74 // jobs we pull off the pending queue get placed on the done queue 75 if (job) { 76 if (done == NULL) { 77 done = psListAlloc(NULL); 78 } 79 psListAdd (done, PS_LIST_TAIL, job); 80 } 81 return job; 82 } 83 84 // this function is not locked -- see thread launder for example 85 psThreadJob *psThreadJobGetDone () { 86 87 if (!done) return NULL; 88 89 psThreadJob *job = psListGetAndRemove (done, PS_LIST_HEAD); 69 90 return job; 70 91 } … … 122 143 123 144 // is the queue empty? 124 if ( queue->head == NULL) {145 if (pending->head == NULL) { 125 146 psThreadUnlock(); 126 147 return true; -
branches/eam_branch_20080719/psLib/src/sys/psThread.h
r18749 r18751 4 4 * 5 5 * @author EAM, IFA 6 * @version $Revision: 1.1.2. 1$ $Name: not supported by cvs2svn $7 * @date $Date: 2008-07-2 6 03:48:39$6 * @version $Revision: 1.1.2.2 $ $Name: not supported by cvs2svn $ 7 * @date $Date: 2008-07-27 17:59:42 $ 8 8 * 9 9 * Copyright 2004-2005 Insitute for Astronomy, University of Hawaii … … 33 33 34 34 psThreadJob *psThreadJobAlloc (char *type, int nArgs); 35 bool psThreadJobAddToQueue (psThreadJob *job); 36 psThreadJob *psThreadJobGet (); 35 bool psThreadJobAddPending (psThreadJob *job); 36 psThreadJob *psThreadJobGetPending (); 37 psThreadJob *psThreadJobGetDone (); 37 38 38 39 psThread *psThreadAlloc ();
Note:
See TracChangeset
for help on using the changeset viewer.
