another attempt at a thread-safe array

This commit is contained in:
leitner
2014-03-29 11:17:04 +00:00
parent c608502cd8
commit c548cce5a1
8 changed files with 120 additions and 111 deletions

View File

@@ -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;
}