无聊的睡眠排序(C++)
  • 板块灌水区
  • 楼主Andycraft
  • 当前回复31
  • 已保存回复31
  • 发布时间2020/4/26 16:49
  • 上次更新2023/11/7 03:56:57
查看原帖
无聊的睡眠排序(C++)
211549
Andycraft楼主2020/4/26 16:49
#include <iostream>
#include <cstdio>
#include <windows.h>
#include <pthread.h>

struct t_param
{
	int x;
	pthread_mutex_t * lock;
};

void * print(void * arg)
{
	t_param * args = (t_param*)arg;
	int & x = args->x;
	Sleep(x * 3);
	pthread_mutex_lock(args->lock);
	std::cout << x << std::endl;
	pthread_mutex_unlock(args->lock);
}

int main()
{
	int n;
	std::cin >> n;
	int a[n];
	pthread_t ID[n];
	pthread_mutex_t IO_Lock;
	pthread_mutex_init(&IO_Lock, NULL);
	t_param arg[n];
	for (int i = 0; i < n; ++i)
	{
		std::cin >> a[i];
		arg[i] = (t_param){a[i], &IO_Lock};
		pthread_create(ID + i, NULL, print, &arg[i]);
	}
	for (int i = 0; i < n; ++i)
	{
		pthread_join(ID[i], NULL);
	}
	return 0;
}

2020/4/26 16:49
加载中...