z3

 avatar
unknown
c_cpp
4 years ago
988 B
6
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

// 1, 2, 3, 4, 6, 8, 10, 12, 14, 16 parz
// 1, 2, 3, 5, 7, 9, 11, 13, 15, 16 nieparz

struct Shared
{
	int a;
	int b;
};

void * thread1 (void * shared)
{
	struct Shared * self = (struct Shared *) shared;
	int * res = malloc(sizeof(int));
	*res = self->a + self->b;
	return (void *) res;
}

void * thread2 (void * shared)
{
	struct Shared * self = (struct Shared *) shared;
	int * res = malloc(sizeof(int));
	*res = self->a - self->b;
	return (void *) res;
}

int main (void)
{
	pthread_t threads[2];
	struct Shared shared;

	shared.a = 10;
	shared.b = 20;
	
	void * rets[2];

	pthread_create(&threads[0], NULL, thread1, &shared);
	pthread_create(&threads[1], NULL, thread2, &shared);

	int i;
	for (i = 0; i < 2; i++)
		pthread_join(threads[i], &(rets[i]));

	for (i = 0; i < 2; i++)
		printf("Watek %d zwrocil: %d\n", i + 1, *((int*)(rets[i])));
		
	for (i = 0; i < 2; i++)
		free(rets[i]);

	return 0;
}
Editor is loading...