首页 > 试题广场 >

多线程

[编程题]多线程
  • 热度指数:45263 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

问题描述:有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
头像 FifteenthOfJuly
发表于 2020-05-26 18:49:30
线程交替打印需要用到线程通信的知识。其他的方法我不太了解,首先想到的就是用Condition来实现线程之间的通信。刚开始写好代码,本地运行,多组测试结果什么的都正确,但是一到线上运行,打印的结果就是乱的,之前从来没有遇到过这种情况,想了我一个多小时。最后突然想到测试用例输入的时候和在本地运行输入的情 展开全文
头像 少给我¥扯淡
发表于 2020-03-28 23:56:42
刚开始a、b、c、d的等待池中都没有ABCD四个线程,所以ABCD都有机会执行打印方法里打同步代码 A线程执行打印完毕调用b.notify()从b的等待池的中移走一个线程,a.wait()进入a的等待池(a对象等待池:A线程)B线程执行打印完毕调用c.notify()从b的等待池的中移走一个线程,b 展开全文
头像 为什么机器不学习
发表于 2021-01-06 19:40:40
个人感觉用AtomicInteger写更简单 import java.util.Scanner; import java.util.concurrent.atomic.AtomicInteger; public class Main { public static void main(St 展开全文
头像 牛客830017178号
发表于 2021-05-11 22:59:19
import threading def initInput(): while True: try: yield int(input()) except EOFError: break class MyThr 展开全文
头像 Complicated8801
发表于 2020-08-24 01:22:43
使用Condition来实现,等四个线程处理结束了,再处理下一个输入,测试用例里有多个输入。 import java.util.*;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Reentr 展开全文
头像 ggm_2021_03_01
发表于 2021-03-03 14:16:41
#include <iostream> #include <thread> #include <mutex> #include <string> using namespace std; string g_write; mutex mtx; boo 展开全文
头像 hiwja
发表于 2021-02-28 16:40:01
CountDownLatch + Semaphore思路清晰 import java.util.Scanner; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Semaphore; /** */ pu 展开全文
头像 IceTang666
发表于 2020-09-03 19:44:16
题目:多线程连接字符串 看到有很多使用CountDownLatch和Condition的题解,这里使用一种不一样的解法 问题描述: 有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组 展开全文
头像 ArprilDayOe
发表于 2021-03-02 09:08:24
import java.io.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.*; public class Main{     public static void main 展开全文
头像 星辰大海sd
发表于 2021-07-19 16:40:48
import java.util.Scanner; import java.util.concurrent.CountDownLatch; import java.util.concurrent.locks.Condition; import java.uti 展开全文

问题信息

难度:
204条回答 59004浏览

热门推荐

通过挑战的用户