celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) { celix_status_t status = CELIX_SUCCESS; bundle_activator_pt activator = (bundle_activator_pt) userData; char *name = NULL; char *uuid = NULL; char uuidName[128]; memset(uuidName, 0, 128); bundleContext_getProperty(context, "inaetics.demonstrator.producer.name", &name); bundleContext_getProperty(context, OSGI_FRAMEWORK_FRAMEWORK_UUID, &uuid); if (name != NULL) { snprintf(uuidName, 128, "%s %s",PRODUCER_STATS_SERVICE_NAME_PREFIX, name); } else if (name == NULL && uuid != NULL) { snprintf(uuidName, 128, "%s %.8s",PRODUCER_STATS_SERVICE_NAME_PREFIX, uuid); } else { snprintf(uuidName, 128, "%s (unknown ID)",PRODUCER_STATS_SERVICE_NAME_PREFIX); } printf("PRODUCER: Starting bundle...\n"); status = producer_create(uuidName, &activator->producer); if (status == CELIX_SUCCESS) { if (bundleActivator_createProducerService(activator) != CELIX_SUCCESS || bundleActivator_registerProducerService(activator) != CELIX_SUCCESS) { printf("PRODUCER: Error creating/registering producerService\n"); } } if (status == CELIX_SUCCESS) { bundleActivator_createStatsService(activator); if (activator->producerStatsService != NULL) { bundleActivator_registerStatsService(activator); } if (activator->producerStatsService == NULL || activator->producerStatsRegistration == NULL) { printf("PRODUCER: Error creating/registering statService\n"); } else { printf("PRODUCER: Created producer with name %s\n", uuidName); } } service_tracker_customizer_pt customizer = NULL; serviceTrackerCustomizer_create(activator->producer, NULL, producer_queueServiceAdded, NULL, producer_queueServiceRemoved, &customizer); serviceTracker_create(context, INAETICS_DEMONSTRATOR_API__SAMPLE_QUEUE_SERVICE_NAME, customizer, &activator->tracker); serviceTracker_open(activator->tracker); return status; }
int main() { srand(time(NULL)); HANDLE mutex = CreateMutex(NULL, FALSE, NULL); array_t *array = array_create(4); consumer_t *consumer1 = consumer_create(array, mutex, 1); consumer_t *consumer2 = consumer_create(array, mutex, 2); producer_t *producer1 = producer_create(array, mutex); producer_t *producer2 = producer_create(array, mutex); Sleep(5000); consumer_destroy(consumer1); consumer_destroy(consumer2); producer_destroy(producer1); producer_destroy(producer2); CloseHandle(mutex); return 0; }
int main(void){ srand(time(NULL)); numbers_t * numbers = numbers_create(); //consumer.c producer_t prod1 = producer_create(numbers); consumer_t cons1 = consumer_create(numbers); producer_t prod2 = producer_create(numbers); consumer_t cons2 = consumer_create(numbers); consumer_join(cons2); producer_destructor(prod1); consumer_destructor(cons1); producer_destructor(prod2); consumer_destructor(cons2); numbers_destructor(numbers); //consumer.c return 0; }