#include #include #include #include #include void print_msg1(void);
void print_msg2(void);
void thread_create(pthread_t thread[2]);
int main()
void print_msg1(int fd)
//pthread_exit(&retval); }
void print_msg2(int fd)
//thread_exit(&retval);
}void thread_create(pthread_t thread[2])
第二組:
#include #include #include #include #define max 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
struct argument;
void *thread1(void *arg_thread)
printf("thread1 :主函式在等我完成任務嗎?\n");
pthread_exit(null); }
void *thread2(void *arg_thread)
printf("thread2, k = %d \n", arg->ts_port);
printf("thread2 :主函式在等我完成任務嗎?\n");
pthread_exit(null);}
void thread_wait(void)
if(thread[1] !=0) }
int main()
第三組:
//兩個函式互斥訪問乙個全域性變數
#include #include #include #include #define max 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
void print(char a, int num)
printf("\n");
return ;
}void *thread1()
printf("thread1 :主函式在等我完成任務嗎?\n");
pthread_exit(null); }
void *thread2()
printf("thread2 :主函式在等我完成任務嗎?\n");
pthread_exit(null);}
void thread_create(void)
void thread_wait(void)
if(thread[1] !=0) }
int main()
第四組:
fan給的乙個任務
#include #include #include #include #include #include //add
#include #include #include #include #include //only write
void test1()
}else
//calculate
double bandwidth ;
bandwidth = (count*1024*8)/arg->time;
printf("bandwidth to write = %lf bps\n",bandwidth);
}void read_thread(void *arg_thread);
struct argument *arg; // 接收傳遞過來的引數結構體
arg = ( struct argument * )arg_thread;
id = pthread_self();
printf("thread read id: %x\n",id);
stop = 0;
if(arg->fd != -1)
}else
//calculate
double bandwidth ;
bandwidth = (count*1024*8)/arg->time;
printf("bandwidth to read = %lf bps\n",bandwidth); }
//throughput test on firmware-loopback
void test4()
; unsigned int time = 0;
struct argument arg;
pthread_t thread[2];
printf("how many times do you want to send:");
scanf("%d", &time);
printf("time = [%d], size = [1024]\n", time);
fd= open("/dev/umts_ipc0", o_rdwr);
arg.fd = fd;
arg.time = time;
set_alarm(time);
pthread_create(&thread[0],null, (void *)(&read_thread), (void*)&arg);
pthread_create(&thread[1],null, (void *)(&write_thread), (void*)&arg);
sleep(1000);
close(fd);
}void main()
}
Linux (C)多執行緒學習(入門)
下面兩個仁兄總結非常好。總結比較好 比較具體 例子 主要學習乙個例子 test1.c created on 2016年7月26日 author andy cong 利用多執行緒與有名管道技術,實現兩個程序之間傳送即時訊息,實現聊天功能。mkfifo xx 新建乙個管道xx 兩個程式test1 tes...
Linux C程序與多執行緒入門 3 訊號
訊號是系統響應某些狀況而產生的事件,程序在接受到訊號時會採取相應的行動。訊號可以明確地由乙個程序產生傳送到另外乙個程序,用這種辦法傳遞資訊或協調操作行為。程序可以生成訊號 捕捉並相應訊號或遮蔽訊號。訊號的名稱是在標頭檔案signal.h裡定義。下面我列出一部分,如下 訊號名稱 說明 sigalrm ...
Linux C程序與多執行緒入門 3 訊號
概念 訊號是系統響應某些狀況而產生的事件,程序在接受到訊號時會採取相應的行動。非常像微控制器的中斷 訊號可以明確地由乙個程序產生傳送到另外乙個程序,用這種辦法傳遞資訊或協調操作行為。程序可以生成訊號 捕捉並相應訊號或遮蔽訊號。訊號的名稱 是在標頭檔案 signal.h 裡定義。下面我列出一部分,如下...