示例#1
0
Data
DataCreateWithBytes(unsigned char *bytes, long length)
{
	Data self;

	if (bytes == NULL || (self = DataCreate()) == NULL)
		return NULL;

	self->destroy = DataDestroy;
	self->_length = length;
	self->_base = bytes;

	return self;
}
示例#2
0
int
main(int argc, char **argv)
{
	Data a;
	struct data data;
	static unsigned char sample[] = { 1, 2, 3, 4 };

	printf("\n--Data--\n");

	printf("init local stack object\n");
	DataInit(&data);

	printf("destroy local stack object\n");
	data.destroy(&data);

	printf("create dynamic object");
	isNotNull((a = DataCreate()));

	printf("destroy dynamic object\n");
	a->destroy(a);

	printf("\nDataCreateCopyBytes()");
	isNotNull(a = DataCreateCopyBytes(sample, sizeof (sample)));

	printf("length equals original...%s\n", (size_t) a->length(a) == sizeof (sample) ? "OK" : "FAIL");
	printf("content same as original...%s\n", memcmp(a->base(a), sample, sizeof (sample)) == 0 ? "OK" : "FAIL");

	printf("destroy a\n");
	a->destroy(a);

	printf("\nDataCreateCopyString()");
	isNotNull(a = DataCreateCopyString("sample"));

	printf("length equals original...%s\n", (size_t) a->length(a) == sizeof ("sample") ? "OK" : "FAIL");
	printf("length equals strlen()+1...%s\n", (size_t) a->length(a) == strlen("sample")+1 ? "OK" : "FAIL");

	printf("memcmp() with original...%s\n", memcmp(a->base(a), "sample", (long) sizeof ("sample")) == 0 ? "OK" : "FAIL");
	printf("strcmp() with original...%s\n", strcmp(a->base(a), "sample") == 0 ? "OK" : "FAIL");

	printf("destroy a\n");
	a->destroy(a);

	printf("\n--DONE--\n");

	return 0;
}
示例#3
0
//hlavne vlakno
int main(int argc, char *argv[]) {
	int const THREAD_COUNT = 5;	//pocet vlakien
	pthread_t id[THREAD_COUNT]; //ID vlakien
	int i;

	//inicializacia generatora nahodnych cisiel
	srand(time(NULL));

	//vytvorenie kluca pre spedifike premenne
	//TODO

	//vytvorenie vstupnych udajov pre vlakna a vytvorenie vlakien
	for(i = 0; i < THREAD_COUNT; i++ ) {
		Data * data = DataCreate(i); //vytvorenie a inicializacia parametra
		//vytvorenie vlakna a predanie parametra
        pthread_create(&id[i], NULL, Worker, (void *) data);
	}

	//cakanie hlavneho vlakna
	sleep(5);

	//synchronne zrusenie vlakien
	for (i = 0; i < THREAD_COUNT; i++)
    {
        pthread_cancel(id[i]);
    }

	//cakanie na ukoncenie vlakien
	for (i = 0; i < THREAD_COUNT; i++)
    {
        pthread_join(id[i], NULL);
        //fprintf(stdout, "Data: %c a %d\n", data->label, data->counter);
       // DataPrintAndDestroy(data);
    }

    
    printf("vsetky pracovne vlakna ukoncene\n");

	return EXIT_SUCCESS;
}