三九宝宝网宝宝教育教学论文

用C语言如何实现多线程同时运行的情况下各个线程输出不同的随机

03月11日 编辑 39baobao.com

[c语言中如何实现输入一个整数实现倒序输出]定义一个整数类型的输入,然后让它正序输出,倒序输出相信是很多C语言初学入门一定会遇到的经典题目,下面就是我对整数的正序和倒序输出一点小小的总结. 1. 反序(倒序)输出 反序输...+阅读

1、使用pthread库执行多线程,这个是Linux下的线程库 Windows下应该有自己的API,不过这种东西一般还是以Linux为标准。pthread_create()创建一个线程,传入fun()的函数指针就行了。然后这个Beep()的需求要进行线程间通信,可以用共享内存的方法,设一个bool变量flag共享,然后beep的时候设为false,beep完设成true。fun()里面每次看一下这个flag,是false的话就不做动作等下一秒,基本可以满足需求。

2、例程:

#include

#include

#include

#include

#define MAX 10

pthread_t thread[2];

pthread_mutex_t mut;

int number=0, i;

void *thread1()

{

printf ("thread1 : I'm thread 1\n");

for (i = 0; i {

printf("thread1 : number = %d\n",number);

pthread_mutex_lock(&mut);

number++;

pthread_mutex_unlock(&mut);

sleep(2);

}

printf("thread1 :主函数在等我完成任务吗?\n");

pthread_exit(NULL);

}

void *thread2()

{

printf("thread2 : I'm thread 2\n");

for (i = 0; i {

printf("thread2 : number = %d\n",number);

pthread_mutex_lock(&mut);

number++;

pthread_mutex_unlock(&mut);

sleep(3);

}

printf("thread2 :主函数在等我完成任务吗?\n");

pthread_exit(NULL);

}

void thread_create(void)

{

int temp;

memset(&thread, 0, sizeof(thread)); //comment1

/*创建线程*/

if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2

printf("线程1创建失败!\n");

else

printf("线程1被创建\n");

if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3

printf("线程2创建失败");

else

printf("线程2被创建\n");

}

void thread_wait(void)

{

/*等待线程结束*/

if(thread[0] !=0) { //comment4

pthread_join(thread[0],NULL);

printf("线程1已经结束\n");

}

if(thread[1] !=0) { //comment5

pthread_join(thread[1],NULL);

printf("线程2已经结束\n");

}

}

int main()

{

/*用默认属性初始化互斥锁*/

pthread_mutex_init(&mut,NULL);

printf("我是主函数哦,我正在创建线程,呵呵\n");

thread_create();

printf("我是主函数哦,我正在等待线程完成任务阿,呵呵\n");

thread_wait();

return 0;

}

C语言多线程问题:如何让下面两段代码同时运行就是播放生日歌的

#include

#include

#include

VOID MyPlaySound(LPVOID lp)

{

unsigned FREQUENCY[]={392,392,440,392,523,494,

392,392,440,392,587,523,

392,392,784,659,523,494,440,

698,698,659,523,587,523,

392,392,440,392,523,494,

392,392,440,392,587,523,

392,392,784,659,523,494,440,

698,698,659,523,587,523};

unsigned DELAY[]={375,125,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,1000,

375,125,500,500,500,500,1000,

375,125,500,500,500,1000};

int CIRCLE;

for(CIRCLE=0;CIRCLE {

Beep(FREQUENCY[CIRCLE],DELAY[CIRCLE]);

}

}

VOID MyPrint(LPVOID lp)

{

int i;

char a[10][4]={"一","二","三","四","五","六","七","八","九","十"};

for(i=0;i {

printf("%s",a[i]);

Sleep(500);

}

}

int main()

{

_beginthread(MyPlaySound, 0, NULL);

_beginthread(MyPrint, 0, NULL);

Sleep(20000);

return 0;

}

编译之前记得把项目属性里改成多线程方案的.不然会出错.我是在VS2010下编译的.

C语言多线程实现

多线程随机选号程序

以下程序运行后看起来比较有意思,像一个随机选号程序,但不是完全按照问题所说的写的 可供参考,要改很容易

//多线程随机选号程序示例

#include

#include

#include

#include

#include

bool g_run = true; //是否运行

void userInput(void*) //监视输入的线程函数

{

while (true)

{

if (getchar()=='\n') //是否输入回车

{

g_run = !g_run; //回车运行 回车暂停

}

Sleep(10); //延迟

}

}

int main()

{

srand(time(0)); //随机数种子

_beginthread(userInput,0,NULL); //开线程

while (true)

{

if (g_run)

{

system("cls"); //清屏

int t = rand() % 1000+ 1;//1-1000的随机数

printf("\n %d",t); //输出

}

Sleep(50); //延迟50毫秒

}

return 0;

}

以下为关联文档:

C语言中100个数中随机选取10个不同的数如何实现首先要确定这100个数的范围,比如0-99。 然后抽取随机数,并利用模除限定范围,每当抽取到一个新的数时,同历史数据比较,如果有重复则放弃。 直到抽取到不重复的10个数为止。 示例代...

C语言可以实现中断和多线程这类功能吗“晕,C语言不是灰常强大,无所不能吗?怎么有人说C语言不能实现 中断 和多线程??”这句话要分两部分来说,首先“晕,C语言不是灰常强大,无所不能吗?”。没有任何一种语言可以无所不能,原...

C语言怎样实现多线程首先你要有控制蛇移动方向的全局变量(定义在main以外因为线程函数也要调用它,每次键盘输入都会修改它的值), 比如 char direction 'a' ==左 'w' == 右 'd'==上 's' == 下,然后你...

C语言多线程的概念线程线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。 多线程:多线程是指程序中包含多个执行...

高分急C语言如何实现多线程有具体方案请提供!你这个问题可是超过200分的啊, 这个往大了说是一个比较复杂的设计方案。 实际上C语言是没有多线程的概念的,但是我们可以通过Task来实现多任务。 简单的说,可以采取以下方案: 定...

c语言多线程编程问题C语言中多线程的实现原理就是线程的原理,本人只了解Linux下面的C,linux下面的线程,不就是进程中的一个控制流么,相对来说代码很简单,但是原理却是很复杂,很难说清,还需要自己详细...

C语言 windows多线程编程点量Http、FTP多线程断点续传下载组件(下载DLL)的开发目的是让用户可以无需关心Http/FTP协议的具体细节,只需要几十行甚至几行代码,便可以实现一个功能完善的Http/FTP下载软件。...

C语言多线程实现线程随机选号程序 以下程序运行后看起来比较有意思,像一个随机选号程序,但不是完全按照问题所说的写的 可供参考,要改很容易//多线程随机选号程序示例#include#include#inclu...

用C语言在windows或者Linux上面编写一个多线程程序#include<stdio.h> #include<stdlib.h> #include<windows.h> DWORD WINAPI ThreadProc(LPVOID lpParam) { int *pt=(int*)lpParam; printf("I am tread %d\r\n",*pt); } int m...

推荐阅读
图文推荐