another attempt at a thread-safe array
This commit is contained in:
@@ -1,20 +1,16 @@
|
||||
#include "iarray.h"
|
||||
|
||||
void iarray_init(iarray* ia,size_t elemsize) {
|
||||
size_t i;
|
||||
ia->elemsize=elemsize;
|
||||
ia->pages=0;
|
||||
ia->pagefence=0;
|
||||
for (i=0; i<sizeof(ia->pages)/sizeof(ia->pages[0]); ++i)
|
||||
ia->pages[i]=0;
|
||||
if (elemsize<1024)
|
||||
ia->bytesperpage=4096;
|
||||
else if (elemsize<8192)
|
||||
ia->bytesperpage=65536;
|
||||
else
|
||||
ia->bytesperpage=elemsize;
|
||||
ia->elemperpage=ia->bytesperpage/elemsize;
|
||||
#ifdef __MINGW32__
|
||||
InitializeCriticalSection(&ia->cs);
|
||||
#else
|
||||
pthread_mutex_init(&ia->m,NULL);
|
||||
#endif
|
||||
ia->bytesperpage=elemsize+sizeof(void*);
|
||||
ia->elemperpage=(ia->bytesperpage-sizeof(void*))/elemsize;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user