C之多线程(例子很不错)

时间:2024-01-07 13:37:44

1.线程

  • 线程池是一个树状结构。
  • 多线程解决并发问题。
  • 一个线程内部的执行顺序是线性的。而线程之间是乱序的。
  • 若要创建一个多线程程序,它的参数必须是空指针类型。
  • 变色龙程序:
  • #define   _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include <stdlib.h>
    #include <Windows.h>
    #include<process.h>//进程
    #include <time.h> void timeset(void*p)//线程的main
    {
    int i = ;
    while ()
    { i++;
    char str[] = { };
    sprintf(str, "title 当前时间第%d秒", i);
    system(str);//执行指令
    Sleep();//休眠1000毫秒
    } system("color 3f");
    } //多线程,调用其他函数也是一样
    void go()
    {
    int num1 = (rand() % );
    Sleep();
    int num2 = rand() % ;
    char str[] = { };
    sprintf(str, "color %x%x", num1, num2);
    system(str);
    go();
    } void colorall(void *p)
    {
    time_t ts;
    unsigned int num = time(&ts);//初始化时间种子
    srand(num);
    go();
    //for (;;)
    // {
    // int num1 = rand() % 16;
    // Sleep(10);
    // int num2 = rand() % 16;
    // char str[50] = { 0 };
    // sprintf(str, "color %x%x", num1, num2);
    // system(str);
    // } //do
    //{
    // int num1 = (rand() % 16);
    // Sleep(10);
    // int num2 = rand() % 16;
    // char str[50] = { 0 };
    // sprintf(str, "color %x%x", num1, num2);
    // system(str);
    //} while (1);
    //AAA:
    // {
    // int num1 = (rand() % 16);
    // Sleep(10);
    // int num2 = rand() % 16;
    // char str[50] = { 0 };
    // sprintf(str, "color %x%x", num1, num2);
    // system(str);
    // }
    // goto AAA;
    } void main()
    {
    _beginthread(timeset, , NULL);
    _beginthread(colorall, , NULL);
    //system("color 3f");
    system("pause");
    }