コード例 #1
0
ファイル: promise.c プロジェクト: emef/cfutures
void
promise_test (bool verbose)
{
    printf (" * promise: ");

    //  @selftest

    // Test promise is fulfilled.
    pthread_t thread1;
    promise_t *promise1 = promise_new ();
    future_t *future1 = promise_get_future (promise1);

    pthread_create (&thread1, NULL, test_fulfill_thread, (void *) promise1);
    char *value = (char *) future_get (future1);
    assert (streq (value, "value"));
    free (value);

    pthread_join (thread1, NULL);
    promise_destroy (&promise1);
    future_destroy (&future1);

    // Test promise is rejected.
    pthread_t thread2;
    promise_t *promise2 = promise_new ();
    future_t *future2 = promise_get_future (promise2);

    pthread_create (&thread2, NULL, test_reject_thread, (void *) promise2);
    future_wait (future2);
    assert (future_is_resolved (future2));
    assert (future_is_fulfilled (future2) == false);
    assert (future_rejected_code (future2) == -1);

    pthread_join (thread2, NULL);
    promise_destroy (&promise2);
    future_destroy (&future2);
    //  @end

    printf ("OK\n");
}
コード例 #2
0
ファイル: message.c プロジェクト: dwerner/libmelon
void message_destroy(message_t *message) {
  promise_destroy( message->promise );
  message->promise = NULL;
  free( message );
}
コード例 #3
0
ファイル: future_pool.c プロジェクト: emef/cfutures
void
cleanup_execute (future_t *future, void *args)
{
    promise_t *promise = (promise_t *) args;
    promise_destroy (&promise);
}