示例#1
0
文件: log.c 项目: klopp/klib
/*
 * Create log info structure:
 */
LogInfo log_create( LOG_FLAGS flags, const char *file, const char *prefix,
                    size_t buf_size )
{
    LogInfo log = Calloc( sizeof( struct _LogInfo ), 1 );

    if( !log ) {
        return NULL;
    }

    log->ibuf_size = LOG_IBUF_MIN_SIZE;
    log->ibuf = Malloc( LOG_IBUF_MIN_SIZE + 1 );

    if( !log->ibuf ) {
        Free( log );
        return 0;
    }

    if( buf_size ) {
        log->buf_size = buf_size < LOG_BUF_MIN_SIZE ? LOG_BUF_MIN_SIZE : buf_size;
        log->buf = Malloc( log->buf_size );

        if( !log->buf ) {
            Free( log->ibuf );
            Free( log );
            return NULL;
        }
    }

    log->prefix = ( prefix ? ( *prefix ? Strdup( prefix ) : NULL ) : Strdup(
                            LOG_DEFAULT_PREFIX ) );

    if( ( ( prefix && *prefix ) || !prefix ) && !log->prefix ) {
        Free( log->ibuf );
        Free( log->buf );
        Free( log );
        return NULL;
    }

    if( file ) {
        log->file = Strdup( file );

        if( !log->file ) {
            Free( log->ibuf );
            Free( log->prefix );
            Free( log->buf );
            Free( log );
            return NULL;
        }
    }

    log->flags = flags;
    log->timefunc = ( flags & LOG_USE_GMTIME ) ? gmtime : localtime;
    __initlock( log->lock );
    return log;
}
示例#2
0
int main()
{
  pthread_t thread[NB_THREAD];
  int       thread_id[NB_THREAD];
  int i=0;

  __initlock(&global_lock);
  for (i=0; i<NB_THREAD ; i++) {
    thread_id[i] = i;
    pthread_create(&(thread[i]), NULL, thread_fct, &(thread_id[i]));
  }

  for (i=0; i<NB_THREAD ; i++) {
    pthread_join(thread[i], NULL);
  }

  printf("global_var: %d\n", global_var);
  return 0;
}