Changeset 164 in libcf


Ignore:
Timestamp:
09/08/14 00:52:00 (10 years ago)
Author:
cheese
Message:

#1 change WaitSingleObject to CriticalSection for windows

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/cf_mutex.c

    r151 r164  
    1010#include "cf_error.h"
    1111
     12#include <stdio.h>
    1213#include <stdlib.h>
    1314
     
    1516# include <windows.h>
    1617# include <process.h>
    17 # define MUTEX_TYPE     HANDLE
     18# define MUTEX_TYPE     CRITICAL_SECTION
    1819#else // #if defined(_WIN32) || defined(_WIN64)
    1920# include <pthread.h>
     
    5354    {
    5455#if defined(_WIN32) || defined(_WIN64)
    55         context->mid = CreateMutexA (NULL, FALSE, NULL);
    56         if (context->mid == NULL)
    57         {
    58             result = CF_ERROR_MUTEX_CREATE;
    59             TRY_BREAK;
    60         }
     56        InitializeCriticalSection (&context->mid);
    6157#else
    6258        result = pthread_mutex_init (&context->mid, NULL);
     
    9389
    9490#if defined(_WIN32) || defined(_WIN64)
    95     if (context->mid == NULL)
    96         return CF_ERROR_MUTEX_INVALID_ARGS;
    97 
    98     CloseHandle (context->mid);
     91    DeleteCriticalSection (&context->mid);
    9992#else
    10093    pthread_mutex_destroy (&context->mid);
     
    117110{
    118111    CF_MUTEX_CONTEXT * context = (CF_MUTEX_CONTEXT *) ctx;
     112    BOOL st;
    119113
    120114    ASSERT_CTX (ctx);
    121115
    122116#if defined(_WIN32) || defined(_WIN64)
    123     WaitForSingleObject (context->mid, INFINITE);
     117    st = TryEnterCriticalSection (&context->mid);
     118    fprintf (stderr, "%d ", st);
    124119#else
    125120    pthread_mutex_lock (&context->mid);
     
    144139
    145140#if defined(_WIN32) || defined(_WIN64)
    146     ReleaseMutex (context->mid);
     141    LeaveCriticalSection (&context->mid);
    147142#else
    148143    pthread_mutex_unlock (&context->mid);
  • trunk/src/cf_util.c

    r163 r164  
    88#include "cf_util.h"
    99#include "cf_error.h"
     10#include "cf_local.h"
    1011
    1112#include <stdio.h>
  • trunk/windows/libcf/libcf.vcproj

    r130 r164  
    223223                >
    224224            </File>
     225            <File
     226                RelativePath="..\..\src\cf_util.c"
     227                >
     228            </File>
    225229        </Filter>
    226230        <Filter
     
    285289                >
    286290            </File>
     291            <File
     292                RelativePath="..\..\include\cf_util.h"
     293                >
     294            </File>
    287295        </Filter>
    288296        <Filter
Note: See TracChangeset for help on using the changeset viewer.