Mercurial > hg > Gears > Gears
changeset 1022:635ccc391642
Organize repository
author | ichikitakahiro <e165713@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 31 Mar 2022 13:23:08 +0900 |
parents | a9c630cc1c65 |
children | 67d57b15b899 |
files | src/parallel_execution/CMakeLists.txt src/parallel_execution/examples/DPPMC/main.cbc src/parallel_execution/examples/socketQueue/LocalDGMQueue.cbc src/parallel_execution/examples/socketQueue/Local_test.cbc src/parallel_execution/examples/socketQueue/RemoteDGMQueue.cbc src/parallel_execution/examples/socketQueue/Remote_test.cbc |
diffstat | 6 files changed, 61 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/src/parallel_execution/CMakeLists.txt Sat Jan 15 17:43:04 2022 +0900 +++ b/src/parallel_execution/CMakeLists.txt Thu Mar 31 13:23:08 2022 +0900 @@ -226,7 +226,7 @@ dist_CountUp SOURCES CPUWorker.cbc SynchronizedQueue.cbc SingleLinkedStack.cbc examples/distributedCountUp/main.cbc AtomicReference.cbc SingleLinkedQueue.cbc - examples/distributedCountUp/CountUpImpl.cbc TaskManagerImpl.cbc MultiDimIterator.cbc SpinLock.cbc + examples/distributedCountUp/CountUpImpl.cbc TaskManagerImpl.cbc MultiDimIterator.cbc SpinLock.cbc examples/distributedCountUp/echoNum.cbc ) GearsCommand( @@ -270,4 +270,26 @@ socket_wc SOURCES examples/socketQueue/RemoteDGMQueue.cbc examples/socketQueue/wordCount_Remote.cbc AtomicReference.cbc SingleLinkedStack.cbc +) + + +GearsCommand( + TARGET + wc_sender + SOURCES + examples/socketQueue/RemoteDGMQueue.cbc examples/socketQueue/LocalDGMQueue.cbc examples/socketQueue/wc_sender.cbc AtomicReference.cbc SingleLinkedStack.cbc +) + +GearsCommand( + TARGET + wc_counter + SOURCES + examples/socketQueue/RemoteDGMQueue.cbc examples/socketQueue/LocalDGMQueue.cbc examples/socketQueue/wc_counter.cbc AtomicReference.cbc SingleLinkedStack.cbc +) + +GearsCommand( + TARGET + queueListTree + SOURCES + examples/queueListTree/main.cbc examples/queueListTree/queueListTreeImpl.cbc AtomicReference.cbc SynchronizedQueue.cbc SingleLinkedStack.cbc RedBlackTree.cbc compare.c ) \ No newline at end of file
--- a/src/parallel_execution/examples/DPPMC/main.cbc Sat Jan 15 17:43:04 2022 +0900 +++ b/src/parallel_execution/examples/DPPMC/main.cbc Thu Mar 31 13:23:08 2022 +0900 @@ -58,7 +58,7 @@ Phils* phils2 = createPhilsImpl(context,2,fork2,fork0); // phils2 #endif - par goto phils0->thinking(exit_code); + par goto phils0->thinking(__exit); par goto phils1->thinking(exit_code); par goto phils2->thinking(exit_code); #if 1
--- a/src/parallel_execution/examples/socketQueue/LocalDGMQueue.cbc Sat Jan 15 17:43:04 2022 +0900 +++ b/src/parallel_execution/examples/socketQueue/LocalDGMQueue.cbc Thu Mar 31 13:23:08 2022 +0900 @@ -25,7 +25,7 @@ LocalDGMQueue->top->next = NULL; LocalDGMQueue->last = LocalDGMQueue->top; LocalDGMQueue->atomic = createAtomicReference(context); - LocalDGMQueue->socket = createSocket(sNum); + LocalDGMQueue->socket = createSocketLocalDGMQueue(sNum); tQueue->tQueue = (union Data*)LocalDGMQueue; tQueue->take = C_takeLocalDGMQueue; @@ -36,7 +36,7 @@ return tQueue; } -int* createSocket(char* sNum){ +int* createSocketLocalDGMQueue(char* sNum){ int w_addr, c_sock; struct sockaddr_in a_addr; char *hostname = "Localhost"; @@ -104,7 +104,7 @@ goto atomic->checkAndSet(&tQueue->top, top, NULL, next(...), clearLocalDGMQueue); } -__code getTrance(struct LocalDGMQueue* tQueue, union Data* data, __code next(...)){ +__code getTranceLocalDGMQueue(struct LocalDGMQueue* tQueue, union Data* data, __code next(...)){ printf("get"); goto next(...); } @@ -177,15 +177,14 @@ goto next(...); } -__code getData(struct LocalDGMQueue* tQueue, __code next(...), __code whenEOF(...)){ +__code getDataLocalDGMQueue(struct LocalDGMQueue* tQueue, __code next(...), __code whenEOF(...)){ int recv_size, send_size; char recv_buf[BUF_SIZE], send_buf; /* クライアントから文字列を受信 */ union Data* recv_data; - recv_size = recv(tQueue->socket, recv_data, sizeof(union Data), 0); + recv_size = read(tQueue->socket, recv_data, sizeof(union Data)); //printf("[%s] [%d]\n", fileString->str, fileString->size); - printf("size is %d\n", sizeof(union Data)); if (recv_size == -1) { printf("recv error\n"); goto exit_code(); @@ -205,7 +204,7 @@ if (strcmp(fileString->str, "finish") == 0) { /* 接続終了を表す0を送信 */ send_buf = 0; - send_size = send(tQueue->socket, &send_buf, 1, 0); + send_size = write(tQueue->socket, &send_buf, 1); if (send_size == -1) { printf("send error\n"); } @@ -214,19 +213,16 @@ } else { /* "finish"以外の場合はクライアントとの接続を継続 */ send_buf = 1; - send_size = send(tQueue->socket, &send_buf, 1, 0); + send_size = write(tQueue->socket, &send_buf, 1); if (send_size == -1) { printf("send error\n"); } } - - Gearef(context, TQueue)->data = recv_data; - goto putLocalDGMQueue(recv_data, next); } -__code sendData(struct RemoteDGMQueue* tQueue, struct FileString* string, __code next(...)){ +__code sendDataLocalDGMQueue(struct RemoteDGMQueue* tQueue, struct FileString* string, __code next(...)){ }
--- a/src/parallel_execution/examples/socketQueue/Local_test.cbc Sat Jan 15 17:43:04 2022 +0900 +++ b/src/parallel_execution/examples/socketQueue/Local_test.cbc Thu Mar 31 13:23:08 2022 +0900 @@ -4,7 +4,8 @@ #interface "FileString.h" #interface "DataTransfer.h" char* service_num; - +int wordNum = 0; +int numOfLine = 0; __code Task1(TQueue* localDGMQueue){ goto gData(); } @@ -36,18 +37,20 @@ __code Task3(TQueue* localDGMQueue, FileString* string){ printf("take[%s] [num:%d]\n", string->str, string->size); + numOfLine += 1; + wordNum += strlen(string->str); goto gData(); //goto localDGMQueue->isEmpty(noEmp, whenEmp); } -__code Task3_stub(struct Context* context){ - TQueue* localDGMQueue = (struct TQueue*)Gearef(context, TQueue)->tQueue; - FileString* string = Gearef(context, TQueue)->data; - goto Task3(context, localDGMQueue, string); +__code Task3_stub(struct Context* context) { + TQueue* localDGMQueue = Gearef(context, TQueue); + FileString* string = Gearef(context, TQueue)->data; + goto Task3(context, localDGMQueue, string); } __code whenEmp(TQueue* localDGMQueue){ - printf("iEmpty & end\n"); + printf("wordNum=[%d] & end\n", wordNum); goto exit_code(); } @@ -56,6 +59,7 @@ } __code getEOF(TQueue* localDGMQueue){ + printf("wordNum=[%d] lineNum = [%d] & end\n", wordNum, numOfLine); printf("EOF & end\n"); goto exit_code(); }
--- a/src/parallel_execution/examples/socketQueue/RemoteDGMQueue.cbc Sat Jan 15 17:43:04 2022 +0900 +++ b/src/parallel_execution/examples/socketQueue/RemoteDGMQueue.cbc Thu Mar 31 13:23:08 2022 +0900 @@ -25,7 +25,7 @@ RemoteDGMQueue->top->next = NULL; RemoteDGMQueue->last = RemoteDGMQueue->top; RemoteDGMQueue->atomic = createAtomicReference(context); - RemoteDGMQueue->socket = createSocket(sNum); + RemoteDGMQueue->socket = createSocketRemoteDGMQueue(sNum); tQueue->tQueue = (union Data*)RemoteDGMQueue; tQueue->take = C_takeRemoteDGMQueue; @@ -36,7 +36,7 @@ return tQueue; } -int* createSocket(char *sNum){ +int* createSocketRemoteDGMQueue(char *sNum){ int sock; struct sockaddr_in a_addr; char *hostname = "localhost"; @@ -87,7 +87,7 @@ goto atomic->checkAndSet(&tQueue->top, top, NULL, next(...), clearRemoteDGMQueue); } -__code getTrance(struct RemoteDGMQueue* tQueue, union Data* data, __code next(...)){ +__code getTranceRemoteDGMQueue(struct RemoteDGMQueue* tQueue, union Data* data, __code next(...)){ printf("get"); goto next(...); } @@ -161,8 +161,8 @@ goto next(...); } -__code sendData(struct RemoteDGMQueue* tQueue, union Data* data, __code next(...)){ - char send_buf[BUF_SIZE], recv_buf; +__code sendDataRemoteDGMQueue(struct RemoteDGMQueue* tQueue, union Data* data, __code next(...)){ + char recv_buf; int send_size, recv_size; @@ -170,7 +170,7 @@ //memcpy(send_buf, string->str, sizeof(send_buf)); /* 文字列を送信 */ - send_size = send(tQueue->socket, data, sizeof(union Data), 0); + send_size = write(tQueue->socket, data, sizeof(union Data)); if (send_size == -1) { printf("send error\n"); close(tQueue->socket); @@ -178,7 +178,7 @@ } /* サーバーからの応答を受信 */ - recv_size = recv(tQueue->socket, &recv_buf, 1, 0); + recv_size = read(tQueue->socket, &recv_buf, 1); if (recv_size == -1) { printf("recv error\n"); close(tQueue->socket); @@ -209,10 +209,10 @@ goto sendDataRemoteDGMQueue(context, tQueue, data, next); } -__code getData(struct RemoteDGMQueue* tQueue, __code next(...), __code whenEOF(...)){ +__code getDataRemoteDGMQueue(struct RemoteDGMQueue* tQueue, __code next(...), __code whenEOF(...)){ } -__code closeSocket(struct RemoteDGMQueue* tQueue, __code next(...)){ +__code closeSocketRemoteDGMQueue(struct RemoteDGMQueue* tQueue, __code next(...)){ } \ No newline at end of file
--- a/src/parallel_execution/examples/socketQueue/Remote_test.cbc Sat Jan 15 17:43:04 2022 +0900 +++ b/src/parallel_execution/examples/socketQueue/Remote_test.cbc Thu Mar 31 13:23:08 2022 +0900 @@ -7,9 +7,11 @@ __code Task1(TQueue* remoteDGMQueue){ FileString* string = NEW(FileString); - char word[1024] = "first"; - memcpy(string->str, word, strlen(word)); + char data[1024] = "moziretsujugemegem"; + memcpy(string->str, data, strlen(data)); string->size = 456; + printf("%s\n", string->str); + goto remoteDGMQueue->put(string, Task2); } @@ -18,32 +20,21 @@ goto Task1(context, remoteDGMQueue); } + __code Task2(TQueue* remoteDGMQueue){ - printf("Task2\n"); FileString* string = NEW(FileString); - char word[1024] = "secound"; + char data[1024] = "finish"; + memcpy(string->str, data, strlen(data)); string->size = 789; - memcpy(string->str, word, strlen(word)); - goto remoteDGMQueue->put(string, Task3); + printf("%s", string->str); + goto remoteDGMQueue->put(string, Task4); } __code Task2_stub(struct Context* context){ TQueue* remoteDGMQueue = (struct TQueue*)Gearef(context, TQueue)->tQueue; - goto Task2(context, remoteDGMQueue); + goto Task4(context, remoteDGMQueue); } -__code Task3(TQueue* remoteDGMQueue){ - printf("Task3\n"); - FileString* string = NEW(FileString); - char word[1024] = "finish"; - memcpy(string->str, word, strlen(word)); - goto remoteDGMQueue->put(string, Task4); ; -} - -__code Task3_stub(struct Context* context){ - TQueue* remoteDGMQueue = (struct TQueue*)Gearef(context, TQueue)->tQueue; - goto Task3(context, remoteDGMQueue); -} __code Task4(TQueue* remoteDGMQueue){ printf("exit\n");