Tilera多執行緒網路程式設計總結
http://blog.csdn.net/zwleagle/article/details/8851400
http://blog.sina.com.cn/s/blog_a574f78401015v2o.html
http://www.dssz.com/1341360.html
http://www.dssz.com/1341355.html
- #include <stdio.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <string.h>
-
#include <sys/types.h>
- #include <netinet/in.h>
- #include <sys/socket.h>
- #include <sys/wait.h>
- #include <unistd.h>
- #include <arpa/inet.h>
- //#include <openssl/ssl.h>
- //#include <openssl/err.h>
- #include <fcntl.h>
- #include <sys/epoll.h>
- #include <sys/time.h>
-
#include <sys/resource.h>
- #include <pthread.h>
- #include <assert.h>
- //#define DEBUG_TILERA
- #ifdef DEBUG_TILERA
- #include <tmc/alloc.h>
- #include <arch/cycle.h>
- #include <arch/spr.h>
- #include <tmc/cpus.h>
- #include <tmc/sync.h>
- #include <tmc/task.h>
- #endif
-
/* These are non-NULL pointers that will result in page faults
- * under normal circumstances, used to verify that nobody uses
- * non-initialized list entries.
- */
- #define MAXBUF 1024
- #define MAXEPOLLSIZE 500000
- #define MAX_THREAD_NUMBER 200
- int THREAD_NUMBER = 50;
- int kdpfd;
- struct epoll_event events[MAXEPOLLSIZE];
- struct epoll_event thread_events[MAX_THREAD_NUMBER][MAXEPOLLSIZE];
- int fdpool[MAX_THREAD_NUMBER] = {-1};
- pthread_t handle_receive_thrdid[MAX_THREAD_NUMBER];
- int msgcount = 0;
- int timecount = 0;
- int count_packet= 0;
- pthread_mutex_t connet_count_lock = PTHREAD_MUTEX_INITIALIZER;
- int connect_count = 0;
- pthread_mutex_t curfds_lock;
- int curfds;
- char buffer[MAX_THREAD_NUMBER][MAXBUF + 1];
- pthread_t thread_count;
- cpu_set_t cpus;
- void BubbleSort(unsigned char R[],int n)
- {
- int i,j;
- unsigned char temp;
- for (i=0; i<n-1; i++ )
- {
- for (j=n-2; j>=i; j--)
- {
- if (R[j]>R[j+1])
- {
- temp=R[j];
- R[j]=R[j+1];
- R[j+1]=temp;
- }
- }
- }
- }
- /*
- setnonblocking - 設定控制代碼為非阻塞方式
- */
- int setnonblocking(int sockfd)
- {
- if (fcntl(sockfd, F_SETFL, fcntl(sockfd, F_GETFD, 0)|O_NONBLOCK) == -1)
- {
- return -1;
- }
- return 0;
- }
- /*
- handle_message - 處理每個 socket 上的訊息收發
- */
- staticvoid *handle_count(void* arg)
- {
- int precount, speed;
- while(1)
- {
- precount = msgcount;
- sleep(5);
- timecount += 5;
- //printf("The tcp connection count is %d\n",count_tcp);
- //printf("The received packets count is %d, time %d\n",msgcount, timecount);
- speed = msgcount - precount ;
- printf("The received speed is %d/5seconds, connect %d, tatol packets %d\n",speed, connect_count, msgcount);
- }
- return NULL;
- }
- staticvoid * handl_receive_msg(void * arg)
- {
- int fdind = 0;
- int nfds = 0;
- int len;
- struct epoll_event ev;
- int fdi;
- char* buf ;
- fdind = (int)arg;
- buf = (char*)&buffer[fdind];
- // printf("fd... %d \n", fdind);
- while(1)
- {
- nfds = epoll_wait(fdpool[fdind], &thread_events[fdind][0], MAXEPOLLSIZE, -1);
- if (nfds == -1)
- {
- perror("epoll_wait");
- break;
- }
- for( fdi = 0; fdi < nfds; fdi++)
- {
- if((thread_events[fdind][fdi].events & EPOLLIN)
- /*&&(!(thread_events[fdind][fdi].events & EPOLLRDHUP))*/)
- {
- while((-1 != (len = recv(thread_events[fdind][fdi].data.fd, buf, MAXBUF, 0)))
- ||((-1 == len) && (EAGAIN != errno)))
- {
-
相關推薦
Tilera多執行緒網路程式設計總結
http://blog.csdn.net/zwleagle/article/details/8851400 http://blog.sina.com.cn/s/blog_a574f78401015v2o.html http://www.dssz.com/13413
多執行緒處理多執行緒網路程式設計問題
1、 一個伺服器,多個客戶端訪問。 2、多個伺服器多執行緒接收多個客戶端,但是埠號是固定的。 java 網路程式設計之TCP +多執行緒 + 執行緒池 資料: https://blog.csdn.net/tanghui270270/article/details/80603199
Linux C: 基於C/S的多執行緒網路程式設計 2 (多客戶端)
客戶端: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/type
學了Java併發程式設計藝術及多執行緒核心程式設計技術,以及最開始學的程式設計思想那本書,今天做些總結
併發Map分析位碼shift預設值是28,對hash值右移28位,取高四位,獲得segments位置,掩碼mask預設值16-1,作一個與值,不知道有何用處,兩個都是不可修改,初始值和併發度有關,一旦確立下來決定了segments陣列大小,包括segments陣列物件不可修改
Java多執行緒學習與總結(Join)
join()方法的用法: join()是主執行緒 等待子執行緒的終止。也就是在子執行緒呼叫了 join() 方法後面的程式碼,只有等到子執行緒結束了才能執行。 例子如下: Java程式碼 p
Java多執行緒學習與總結(ThreadGroup)
在Java中每個執行緒都屬於某個執行緒組(ThreadGroup)。例如,如果在main()中產生一個執行緒,則這個執行緒屬於main執行緒組管理的一員,您可以使用下面的指令來獲得目前執行緒所屬的執行緒組名稱: Java程式碼
網際網路架構多執行緒併發程式設計高階教程(上)
#基礎篇幅:執行緒基礎知識、併發安全性、JDK鎖相關知識、執行緒間的通訊機制、JDK提供的原子類、併發容器、執行緒池相關知識點 #高階篇幅:ReentrantLock原始碼分析、對比兩者原始碼,更加深入理解讀寫鎖,JAVA記憶體模型、先行發生原則、指令重排序 #環境說明:idea、ja
關於多執行緒相關問題總結一下
程序和執行緒、多執行緒 程序是程式執行的基本單位,執行緒是程序中的基本單位; 執行緒共享一塊記憶體和系統資源,執行緒之間切換開銷相對程序較小;執行緒也被稱為輕量級程序; 各程序之間是獨立的,各執行緒之間則不是,程序之間屬於作業系統範疇 多執行緒其實是幾乎同時執行
多執行緒單元測試總結
多執行緒單元測試 pom配置 <!--springmvc中進行多執行緒測試--> <dependency> <groupId>net.sourceforge.groboutils</groupId>
多執行緒基礎知識總結
0、併發和並行、程序核線程、多程序和多執行緒的區別: (這裡的時間和時刻上的概念同物理上的一樣) 併發:在一段時間內多個任務同時執行,或者說是在一段很短的時間內可以執行多條程式指令,微觀上看起來好像是可以同時執行多個程序,單核處理器就可以做到。 並行:在同一時刻多個任務同時執行,或者說是
關於多執行緒的小總結
對於知識學習的時候,儘量瞭解一下底層的東西,這樣就會對自己學習非常有用,下面我來介紹一下自己所理解的系統性的多執行緒。 首先從cpu開始,cpu訪問本地記憶體,獲得主記憶體中共享變數的拷貝,然後通過緩衝區將改變的值寫入進去,注意是批處理的寫入到主記憶體當中,運用批處理的方式
java多執行緒網路伺服器端向客戶端傳送檔案
tcpServer.java package com.tcp.server; import java.io.IOException; import java.net.ServerSocket; im
boost庫多執行緒(Thread)程式設計(執行緒操作,互斥體mutex,條件變數)
轉載地址: 1 建立執行緒 就像std::fstream類就代表一個檔案一樣,boost::thread類就代表一個可執行的執行緒。預設建構函式建立一個代表當前執行執行緒的例項。一個過載的建構函式以一個不需任何引數的函式物件作為引數,並且沒有返回值。這個建構函式建立
多程序間通訊方式和多執行緒同步機制總結
多程序之間通訊方式: 檔案對映:本地之間 共享記憶體:本地之間 匿名管道:本地之間 命名管道:跨伺服器 郵件槽:一對多的傳輸資料,通常通過網路向一臺Windo
NSURLSession和多執行緒網路之GCD簡單介紹(任務,佇列)
NSURLConnection是2003年伴隨著Safari一起發行的網路開發API,距今已經有十一年。當然,在這十一年間它表現的相當優秀,有大量的應用基礎,這也是為什麼前面花了那麼長時間對它進行詳細介紹的原因。但是這些年伴隨著iPhone、iPad的發展,對於NSURL
Java8學習計劃--關於多核多執行緒併發程式設計-Java8-CompletableFuture 1的介紹
零零散散接近一個月的課餘時間,學完Java8InAction和Guava,感觸很多,收穫也很大,特別開心,接下來會利用空餘時間學習Spark,希望自己在技術上慢慢積累,越來越從容。對於Java8 最大的改變是lambda表示式 Collecotors CompletableF
java多執行緒第一篇——多執行緒基礎知識點總結
程序與執行緒一個正在作業系統中執行的 exe 程式理解成一個“程序”,執行緒可以理解成是在程序中獨立執行的子任務。一個QQ.exe 執行時是一個程序, 其中:好友視訊執行緒、下載檔案執行緒、傳輸資料執行緒、傳送表 情執行緒等。 2.main方法是一個執行緒3.執行緒是一個子
iOS【多執行緒網路之圖片下載框架之SDWebImage】
效果: 程式碼: - (NSArray *)apps { if (!_apps) { NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pat
Android studio 多執行緒網路檔案下載
執行結果 檔案結構 主要程式碼 MainActivity package cn.edu.sicnu.threadfiledownload; import android.app.ProgressDialog; impor