Unix下如何写出多线程的程序

P_B_Paul_ 2004-05-11 11:46:06
本人刚开始在Unix下写程序,需要写一个多线程的程序,哪位能给个例子?
比如,两个线程:一个线程作加一运算(就是i++),另一个线程输出这个结果(就是不停的输出i),应该怎么实现呢?
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
anonimousboy 2004-05-11
  • 打赏
  • 举报
回复
#include <stdio.h> /* 定义标准的 I/O 函数 */
#include <pthread.h> /* 定义 pthread 函数和数据结构 */

/* 新线程将执行的函数 */
void*
do_loop(void* data)
{
int i; /* 计数器,要打印的数字 */
int j; /* 计数器,延迟 */
int me = *((int*)data); /* 线程编号 */

for (i=0; i<10; i++) {
for (j=0; j<500000; j++) /* 延迟循环 */
;
printf("'%d' - Got '%d'\n", me, i);
}

/* 退出线程 */
pthread_exit(NULL);
}

/* 程序从 main 函数开始执行 */
int
main(int argc, char* argv[])
{
int ret; /* 线程创建函数的返回值 */
pthread_t p_thread; /* 线程的 ID 号 */
int a = 1; /* 线程编号 */
int b = 2; /* 线程编号 */

/* 创建一个新线程,它将执行 do_loop() */
ret = pthread_create(&p_thread, NULL, do_loop, (void*)&a);
/* 在主线程中也同样执行 do_loop() */
do_loop((void*)&b);

/* 不会执行到这一句 */
return 0;
}

KofIoI 2004-05-11
  • 打赏
  • 举报
回复
用pthread_create函数创建一个线程,该线程调用的函数作++运算,同时将主线程挂起,最后创建的线程退出,主线程输出。。。试试吧,我也是刚学的。^_^
P_B_Paul_ 2004-05-11
  • 打赏
  • 举报
回复
呵呵,谢谢各位了

开始编译不过去,后来才知道需要在编译的时候加参数 -pthread(我用的是freeBSD,不知道其他系统用不用),看来需要学习的东西很多啊......
gaoxianfeng 2004-05-11
  • 打赏
  • 举报
回复
主任务
{
创建线程
延迟(严格该用条件变量)
加锁A
输出i
解锁A
}

线程
{

加锁A
(释放条件变量)
操作一次i
解锁A
}
yangl2000 2004-05-11
  • 打赏
  • 举报
回复
http://www.llnl.gov/computing/tutorials/workshops/workshop/pthreads/MAIN.html#PthreadsAPI

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧