?49 多线程

100 篇文章 1 订阅
1 篇文章 0 订阅

题目描述
问题描述:有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。[注:C语言选手可使用WINDOWS SDK库函数]
接口说明:
void init(); //初始化函数
void Release(); //资源释放函数
unsignedint__stdcall ThreadFun1(PVOID pM) ; //线程函数1,传入一个int类型的指针[取值范围:1 – 250,测试用例保证],用于初始化输出A次数,资源需要线程释放
unsignedint__stdcall ThreadFun2(PVOID pM) ;//线程函数2,无参数传入
unsignedint__stdcall ThreadFun3(PVOID pM) ;//线程函数3,无参数传入
Unsigned int __stdcall ThreadFunc4(PVOID pM);//线程函数4,无参数传入
char g_write[1032]; //线程1,2,3,4按顺序向该数组赋值。不用考虑数组是否越界,测试用例保证
输入描述:
输入一个int整数

输出描述:
输出多个ABCD

示例1
输入
10
输出
ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD
运用多线程,但结果不行

#构造类方法不通过循环执行
import threading
def go1():
    with con:
        print('A',end='')
        con.wait()
        con.notify()

def go2():
    with con:
        print('B',end='')
        con.notify()
        con.wait()

def go3():
    with con:
        print('C',end='')
        con.notify()
        con.wait()

def go4():
    with con:
        print('D',end='')
        con.notify()
        con.wait()

n=int(input())
con = threading.Condition()
for i in range(n):
    threading.Thread(target=go1).start()
    threading.Thread(target=go2).start()
    threading.Thread(target=go3).start()
    threading.Thread(target=go4).start()
#继承类方法无法实现线程1控制数量
import threading
class Mythread1(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        # self.num=num
        self.line=''#定义一个line,后面用类的.方式调用属性
    def run(self):
        global condition
        with condition:
            self.line+='A'
class Mythread2(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.line=''#定义一个line,后面用类的.方式调用属性
    def run(self):
        global condition
        with condition:
            self.line+='B'
class Mythread3(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.line=''#定义一个line,后面用类的.方式调用属性
    def run(self):
        global condition
        with condition:
            self.line+='C'
class Mythread4(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.line=''#定义一个line,后面用类的.方式调用属性
    def run(self):
        global condition
        with condition:
            self.line+='D'
while True:
    try:
        condition=threading.Condition()
        result=[]
        threadlist=[]
        N=int(input())
        for i in range(N):
            th1=Mythread1()
            th1.start()
            th2=Mythread2()
            th2.start()
            th3=Mythread3()
            th3.start()
            th4=Mythread4()
            th4.start()
            threadlist.append(th1)
            threadlist.append(th2)
            threadlist.append(th3)
            threadlist.append(th4)
        for eachthread in threadlist:
            result.append(eachthread.line)
        print(''.join(result))
    except:
        break
Java多线程递归可以通过创建多个线程来实现递归操作。具体实现方法如下: 1.创建一个继承Thread类的递归线程类,重写run()方法,在run()方法中实现递归操作。 2.在递归线程类中定义一个构造方法,用于传递递归参数。 3.在递归线程类中定义一个静态变量,用于记录递归深度。 4.在递归线程类中定义一个静态变量,用于记录递归线程数。 5.在递归线程类中定义一个静态变量,用于记录递归线程的最大数目。 6.在递归线程类中定义一个静态变量,用于记录递归线程的最大深度。 7.在递归线程类中定义一个静态变量,用于记录递归线程的最小深度。 8.在递归线程类中定义一个静态变量,用于记录递归线程的平均深度。 9.在递归线程类中定义一个静态变量,用于记录递归线程的总数。 10.在递归线程类中定义一个静态变量,用于记录递归线程的总时间。 11.在递归线程类中定义一个静态变量,用于记录递归线程的平均时间。 12.在递归线程类中定义一个静态变量,用于记录递归线程的最大时间。 13.在递归线程类中定义一个静态变量,用于记录递归线程的最小时间。 14.在递归线程类中定义一个静态变量,用于记录递归线程的总内存。 15.在递归线程类中定义一个静态变量,用于记录递归线程的平均内存。 16.在递归线程类中定义一个静态变量,用于记录递归线程的最大内存。 17.在递归线程类中定义一个静态变量,用于记录递归线程的最小内存。 18.在递归线程类中定义一个静态变量,用于记录递归线程的总CPU时间。 19.在递归线程类中定义一个静态变量,用于记录递归线程的平均CPU时间。 20.在递归线程类中定义一个静态变量,用于记录递归线程的最大CPU时间。 21.在递归线程类中定义一个静态变量,用于记录递归线程的最小CPU时间。 22.在递归线程类中定义一个静态变量,用于记录递归线程的总IO时间。 23.在递归线程类中定义一个静态变量,用于记录递归线程的平均IO时间。 24.在递归线程类中定义一个静态变量,用于记录递归线程的最大IO时间。 25.在递归线程类中定义一个静态变量,用于记录递归线程的最小IO时间。 26.在递归线程类中定义一个静态变量,用于记录递归线程的总网络时间。 27.在递归线程类中定义一个静态变量,用于记录递归线程的平均网络时间。 28.在递归线程类中定义一个静态变量,用于记录递归线程的最大网络时间。 29.在递归线程类中定义一个静态变量,用于记录递归线程的最小网络时间。 30.在递归线程类中定义一个静态变量,用于记录递归线程的总磁盘时间。 31.在递归线程类中定义一个静态变量,用于记录递归线程的平均磁盘时间。 32.在递归线程类中定义一个静态变量,用于记录递归线程的最大磁盘时间。 33.在递归线程类中定义一个静态变量,用于记录递归线程的最小磁盘时间。 34.在递归线程类中定义一个静态变量,用于记录递归线程的总锁时间。 35.在递归线程类中定义一个静态变量,用于记录递归线程的平均锁时间。 36.在递归线程类中定义一个静态变量,用于记录递归线程的最大锁时间。 37.在递归线程类中定义一个静态变量,用于记录递归线程的最小锁时间。 38.在递归线程类中定义一个静态变量,用于记录递归线程的总等待时间。 39.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待时间。 40.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待时间。 41.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待时间。 42.在递归线程类中定义一个静态变量,用于记录递归线程的总等待数。 43.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待数。 44.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待数。 45.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待数。 46.在递归线程类中定义一个静态变量,用于记录递归线程的总等待时间。 47.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待时间。 48.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待时间。 49.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待时间。 50.在递归线程类中定义一个静态变量,用于记录递归线程的总等待数。 51.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待数。 52.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待数。 53.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待数。 54.在递归线程类中定义一个静态变量,用于记录递归线程的总等待时间。 55.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待时间。 56.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待时间。 57.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待时间。 58.在递归线程类中定义一个静态变量,用于记录递归线程的总等待数。 59.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待数。 60.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待数。 61.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待数。 62.在递归线程类中定义一个静态变量,用于记录递归线程的总等待时间。 63.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待时间。 64.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待时间。 65.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待时间。 66.在递归线程类中定义一个静态变量,用于记录递归线程的总等待数。 67.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待数。 68.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待数。 69.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待数。 70.在递归线程类中定义一个静态变量,用于记录递归线程的总等待时间。 71.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待时间。 72.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待时间。 73.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待时间。 74.在递归线程类中定义一个静态变量,用于记录递归线程的总等待数。 75.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待数。 76.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待数。 77.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待数。 78.在递归线程类中定义一个静态变量,用于记录递归线程的总等待时间。 79.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待时间。 80.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待时间。 81.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待时间。 82.在递归线程类中定义一个静态变量,用于记录递归线程的总等待数。 83.在递归线程类中定义一个静态变量,用于记录递归线程的平均等待数。 84.在递归线程类中定义一个静态变量,用于记录递归线程的最大等待数。 85.在递归线程类中定义一个静态变量,用于记录递归线程的最小等待数。 86.在递归线程类中定义一个静态变量,用于记录递归线程的总等待时间。 87.在递归线程类中定义一个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值