diff --git a/A2/fhistogram-mt b/A2/fhistogram-mt index 3e8a058..1062568 100755 Binary files a/A2/fhistogram-mt and b/A2/fhistogram-mt differ diff --git a/A2/fhistogram-mt.c b/A2/fhistogram-mt.c index 65debb4..e44bbec 100644 --- a/A2/fhistogram-mt.c +++ b/A2/fhistogram-mt.c @@ -14,7 +14,7 @@ #include "job_queue.h" -pthread_mutex_t stdout_mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // err.h contains various nonstandard BSD extensions, but they are // very handy. @@ -26,7 +26,12 @@ int global_histogram[8] = { 0 }; struct job_queue q; - +void update_histogram_mt(int local_histogram[8]) { + pthread_mutex_lock(&mutex); + merge_histogram(local_histogram, global_histogram); + print_histogram(global_histogram); + pthread_mutex_unlock(&mutex); +} int fhistogram_mt(char const *path) { FILE *f = fopen(path, "r"); diff --git a/A2/src.zip b/A2/src.zip index d40ab08..656c4c9 100644 Binary files a/A2/src.zip and b/A2/src.zip differ diff --git a/A3/src/cascade b/A3/src/cascade index fec961f..db63bc1 100755 Binary files a/A3/src/cascade and b/A3/src/cascade differ diff --git a/A3/src/cascade.c b/A3/src/cascade.c index 6d4ea20..6c116b0 100644 --- a/A3/src/cascade.c +++ b/A3/src/cascade.c @@ -329,7 +329,9 @@ csc_file_t* csc_parse_file(const char* sourcefile, const char* destination) casc_file_data->blockcount = 1 + floor( (casc_file_data->targetsize - 1.0)/casc_file_data->blocksize ); - casc_file_data->trailblocksize = casc_file_data->targetsize - ((casc_file_data->blockcount - 1) * casc_file_data->blocksize); + casc_file_data->trailblocksize = casc_file_data->targetsize - ( + (casc_file_data->blockcount - 1) * casc_file_data->blocksize + ); casc_file_data->completed = 0; csc_block_t* block_list = malloc( @@ -405,8 +407,9 @@ void get_block(csc_block_t* block, csc_peer_t peer, unsigned char* hash, char* o } else { buffer_size = MAX_LINE; } - rio_t rio; char rio_buf[buffer_size]; + + rio_t rio; int peer_socket; peer_socket = Open_clientfd(peer.ip, peer.port); Rio_readinitb(&rio, peer_socket); @@ -487,7 +490,6 @@ void get_block(csc_block_t* block, csc_peer_t peer, unsigned char* hash, char* o */ int get_peers_list(csc_peer_t** peers, uint8_t hash[32]) { - rio_t rio; uint8_t rio_buf[MAX_LINE];