1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-05 15:55:57 +03:00

Improvements to the testability of the threads.c module.

FossilOrigin-Name: 386e088868b44b02646e452147838d2e97b093ee
This commit is contained in:
drh
2014-05-20 19:11:50 +00:00
parent de823bedef
commit cb6effafec
3 changed files with 13 additions and 12 deletions

View File

@@ -54,15 +54,16 @@ int sqlite3ThreadCreate(
assert( ppThread!=0 );
assert( xTask!=0 );
/* This routine is never used in single-threaded mode */
assert( sqlite3GlobalConfig.bCoreMutex!=0 );
*ppThread = 0;
p = sqlite3Malloc(sizeof(*p));
if( p==0 ) return SQLITE_NOMEM;
memset(p, 0, sizeof(*p));
p->xTask = xTask;
p->pIn = pIn;
if( sqlite3GlobalConfig.bCoreMutex==0
|| pthread_create(&p->tid, 0, xTask, pIn)!=0
){
if( sqlite3FaultSim(200) ? 1 : pthread_create(&p->tid, 0, xTask, pIn) ){
p->done = 1;
p->pOut = xTask(pIn);
}
@@ -80,10 +81,10 @@ int sqlite3ThreadJoin(SQLiteThread *p, void **ppOut){
*ppOut = p->pOut;
rc = SQLITE_OK;
}else{
rc = pthread_join(p->tid, ppOut);
rc = pthread_join(p->tid, ppOut) ? SQLITE_ERROR : SQLITE_OK;
}
sqlite3_free(p);
return rc ? SQLITE_ERROR : SQLITE_OK;
return rc;
}
#endif /* SQLITE_OS_UNIX && defined(SQLITE_MUTEX_PTHREADS) */