- 博客(54)
- 收藏
- 关注
原创 wwwwwwww6
printf("\n------ 用户信息管理系统 ------\n");printf("用户信息找到:\n");printf("请输入新的用户名:");printf("保存文件失败。printf("请输入新的ID:");printf("请输入新的密码:");printf("请输入新的电话:");printf("请输入新的邮箱:");printf("请输入要查找的用户名:");printf("请输入新用户的用户名:");printf("请输入要修改的用户名:");printf("请输入新用户的ID:");
2023-07-28 14:59:30
117
原创 wwwwwww5
/ 根据任务队列长度和工作线程数量调整线程池。// 任务队列为空且线程池停止运行,结束线程。// 检查任务队列长度和工作线程数量。// 将客户端信息添加到任务队列中。// 线程池已满,拒绝连接。// 创建新的工作线程。// 销毁一个工作线程。// 休眠一段时间后重新检查。// 创建线程处理客户端通信。// 创建客户端信息结构体。// 等待有可用的任务。// 接收客户端消息。// 接受客户端连接。// 等待线程池中的线程结束。// 设置服务器地址结构。// 等待管理者线程结束。
2023-07-28 11:11:00
157
原创 wwwwwww4
/ 接收和发送消息,直到收到退出消息。// 子进程中处理与客户端的通信。// 发送消息给客户端。// 父进程中继续监听连接请求。// 接收客户端消息。// 创建子进程来处理客户端通信。// 关闭客户端套接字。// 绑定服务器套接字到指定端口。// 接受客户端连接。// 设置服务器地址结构。// 创建服务器套接字。// 关闭服务器套接字。
2023-07-28 11:00:22
1046
原创 wwwwww3
/ 拿到了左边的筷子而没拿到右边的就放下刚刚拿到的左边的筷子。// 初始化 chopsticks (mutexes)// 初始化 chopsticks (mutexes)// 拿起右边的筷子。// 让其他哲学家线程先运行。// 拿起右边的筷子。// 等待哲学家线程结束。// 等待哲学家线程结束。// 创建哲学家线程。
2023-07-28 10:26:05
50
原创 91919
/ 每隔5秒检测一次。// 接收和发送消息,直到收到退出消息。// 发送消息给客户端。// 检测任务队列和活跃线程数。// 接收客户端消息。// 等待任务队列不为空。// 绑定服务器套接字到指定端口。// 添加任务到任务队列。// 通知任务队列不为空。// 通知任务队列不满。// 关闭客户端套接字。// 创建线程池和管理者线程。// 接受客户端连接。// 设置服务器地址结构。
2023-07-13 13:37:00
47
原创 838383
/ 绑定服务器套接字到指定端口。// 发送消息给客户端。// 添加客户端到队列。// 创建新的工作线程。// 接收客户端消息。// 接受客户端连接。// 设置服务器地址结构。// 关闭客户端套接字。// 创建服务器套接字。// 关闭服务器套接字。
2023-07-13 11:24:46
30
原创 828282
/ 发送和接收消息,直到发送退出消息。// 创建线程处理客户端通信。// 绑定服务器套接字到指定端口。// 发送消息给客户端。// 发送消息给服务器。// 接收客户端消息。// 接受客户端连接。// 接收服务器消息。// 设置服务器地址结构。// 设置服务器地址结构。// 关闭客户端套接字。// 创建服务器套接字。// 关闭服务器套接字。// 创建客户端套接字。
2023-07-13 10:50:55
38
原创 818181
/ 设置线程池的容量为5。// 将客户端套接字信息保存到线程池中的空闲线程中。// 通知管理者线程有新的客户端连接。// 等待直到线程池中有空闲线程。// 接收和发送消息,直到收到退出消息。// 获取下一个客户端套接字。// 创建线程处理客户端通信。// 增加线程池中线程的数量。// 增加线程池中线程的数量。// 发送消息给客户端。// 主线程负责接受客户端连接。// 接收客户端消息。// 接受客户端连接。
2023-07-13 10:24:56
44
原创 747474
/ 检查任务队列中的任务数量和工作线程个数。// 处理客户端请求(这里只是回显)// 将客户端信息添加到任务队列中。// 线程池已满,拒绝连接。// 创建新的工作线程。// 销毁一个工作线程。// 发送和接收消息,直到发送退出消息。// 等待一段时间再次检查。// 创建客户端信息结构体。// 适当调整线程池大小。// 绑定服务器套接字到指定端口。// 发送消息给服务器。// 接收客户端消息。// 接受客户端连接。// 等待线程池中的线程结束。// 接收服务器消息。// 设置服务器地址结构。
2023-07-13 10:01:13
41
原创 737373
/ 根据任务队列长度和工作线程数量调整线程池。// 任务队列为空且线程池停止运行,结束线程。// 检查任务队列长度和工作线程数量。// 将客户端信息添加到任务队列中。// 线程池已满,拒绝连接。// 创建新的工作线程。// 销毁一个工作线程。// 发送和接收消息,直到发送退出消息。// 创建线程处理客户端通信。// 创建客户端信息结构体。// 等待有可用的任务。// 发送消息给服务器。// 接收客户端消息。// 接受客户端连接。// 等待线程池中的线程结束。// 接收服务器消息。
2023-07-13 09:50:55
39
原创 727272
/ 处理客户端请求(这里只是回显)// 发送和接收消息,直到发送退出消息。// 创建线程处理客户端通信。// 创建客户端信息结构体。// 将线程添加到线程池中。// 绑定服务器套接字到指定端口。// 发送消息给服务器。// 接收客户端消息。// 接受客户端连接。// 等待线程池中的线程结束。// 接收服务器消息。// 设置服务器地址结构。// 设置服务器地址结构。// 关闭客户端套接字。// 创建服务器套接字。// 关闭服务器套接字。
2023-07-13 09:34:05
26
原创 717171
/ 根据任务队列长度和工作线程数量调整线程池。// 任务队列为空且线程池停止运行,结束线程。// 检查任务队列长度和工作线程数量。// 将客户端信息添加到任务队列中。// 线程池已满,拒绝连接。// 创建新的工作线程。// 销毁一个工作线程。// 发送和接收消息,直到发送退出消息。// 休眠一段时间后重新检查。// 绑定服务器套接字到指定端口。// 等待有可用的任务。// 发送消息给服务器。// 接收客户端消息。// 接受客户端连接。// 等待线程池中的线程结束。// 接收服务器消息。
2023-07-13 09:33:22
40
原创 656565
/ 子进程不需要监听连接请求的套接字。// 父进程不需要与客户端通信的套接字。// 接收和发送消息,直到收到退出消息。// 子进程中处理与客户端的通信。// 发送消息给客户端。// 父进程中继续监听连接请求。// 接收客户端消息。// 创建子进程来处理客户端通信。// 关闭客户端套接字。// 绑定服务器套接字到指定端口。// 接受客户端连接。// 设置服务器地址结构。// 创建服务器套接字。// 关闭服务器套接字。
2023-07-11 10:54:08
494
原创 646464
/ 子进程不需要监听连接请求的套接字。// 父进程不需要与客户端通信的套接字。// 接收和发送消息,直到收到退出消息。// 子进程中处理与客户端的通信。// 发送消息给客户端。// 父进程中继续监听连接请求。// 接收客户端消息。// 创建子进程来处理客户端通信。// 关闭客户端套接字。// 绑定服务器套接字到指定端口。// 接受客户端连接。// 设置服务器地址结构。// 创建服务器套接字。// 关闭服务器套接字。
2023-07-11 10:41:33
51
原创 636363
/ 接收和发送消息,直到收到退出消息。// 绑定服务器套接字到指定端口。// 发送消息给客户端。// 接收客户端消息。// 设置服务器地址结构。// 创建服务器套接字。// 接受客户端连接。
2023-07-11 10:21:51
39
原创 626262
/ 接收和发送消息,直到收到退出消息。// 绑定服务器套接字到指定端口。// 发送消息给客户端。// 接收客户端消息。// 设置服务器地址结构。// 创建服务器套接字。// 接受客户端连接。
2023-07-11 10:14:12
40
原创 616161
/ 接收和发送消息,直到收到退出消息。// 绑定服务器套接字到指定端口。// 发送消息给客户端。// 接收客户端消息。// 设置服务器地址结构。// 创建服务器套接字。// 接受客户端连接。
2023-07-11 10:03:13
60
原创 575757
int in;int out;int count;} Buffer;exit(1);exit(1);exit(1);exit(1);int data;sleep(1);return 0;
2023-07-10 14:38:59
42
原创 515151
printf("消费者读取缓冲区 %d: %s", i, bufferPool->buffer[i]);printf("生产者写入缓冲区 %d: %s", i, bufferPool->buffer[i]);#include <stdio.h>}这是消费者代码,说中文。
2023-07-10 14:21:53
85
原创 464646
/ 检查缓冲区是否已满。// 检查缓冲区是否为空。// 获取互斥信号量。// 释放互斥信号量。// 获取互斥信号量。// 释放互斥信号量。// 断开共享内存连接。// 断开共享内存连接。
2023-07-10 10:55:38
46
原创 454545
/ 断开共享内存连接。// 断开共享内存连接。// 获取互斥信号量。// 释放互斥信号量。// 获取互斥信号量。// 取出缓冲区数据。// 释放互斥信号量。
2023-07-10 10:39:53
20
原创 424242
else {int i;for (i = 0;i++) {for (i = 0;i++) {for (i = 0;i++) {// Cleanupfor (i = 0;i++) {return 0;
2023-07-10 09:36:43
14
原创 414141
int i;for (i = 0;i++) {for (i = 0;i++) {for (i = 0;i++) {// Cleanupfor (i = 0;i++) {return 0;
2023-07-10 09:28:11
90
原创 383838
/ 定义共享内存大小和缓冲池大小。// 定义共享内存大小和缓冲池大小。// 定义信号量操作结构体。// 定义信号量操作结构体。// 定义共享内存结构体。// 定义共享内存结构体。// 定义缓冲区状态。// 定义缓冲区状态。
2023-07-08 15:48:29
56
原创 373737
/ 定义共享内存大小和缓冲池大小。// 定义共享内存大小和缓冲池大小。// 定义信号量操作结构体。// 定义信号量操作结构体。// 定义共享内存结构体。// 定义共享内存结构体。// 定义缓冲区状态。// 定义缓冲区状态。
2023-07-08 15:41:50
56
原创 363636
/ 结束条件:如果所有缓冲区都已经被消费,则退出循环。// 读取数据并写入输出文件。// 释放缓冲区的访问权。// 等待可消费的缓冲区。// 查找可消费的缓冲区。// 释放缓冲区的访问权。// 等待可用的缓冲区。// 查找可用的缓冲区。// 写入数据到缓冲区。// 重置缓冲区状态。// 定义信号量操作结构体。// 定义信号量操作结构体。
2023-07-08 15:17:13
21
原创 353535
/ 结束条件:如果所有缓冲区都已经被消费,则退出循环。// 另一个子进程作为第二个生产者。// 读取数据并写入输出文件。// 子进程作为第一个生产者。// 释放缓冲区的访问权。// 等待可消费的缓冲区。// 查找可消费的缓冲区。// 释放缓冲区的访问权。// 等待可用的缓冲区。// 查找可用的缓冲区。// 写入数据到缓冲区。// 重置缓冲区状态。// 父进程作为第一个消费者。// 删除共享内存和信号量集。// 创建另一个子进程。// 等待子进程结束。// 定义信号量操作结构体。
2023-07-08 15:02:33
139
原创 343434
/ 标记缓冲区为已使用。// 标记缓冲区为可分配。// 初始化信号量为1,用于互斥访问缓冲池。// 读取数据并写入文件。// 打印生产者工作过程。// 等待缓冲区可分配。// 查找可用的缓冲区。// 将数据写入缓冲区。// 等待缓冲区可消费。// 检查缓冲区状态。// 创建两个生产者进程。// 创建两个消费者进程。// 等待所有子进程结束。// 连接到共享内存段。// 初始化缓冲池结构。// 创建共享内存段。
2023-07-08 14:54:15
22
原创 313131
/ 消费者读取位置。// 生产者写入位置。// 共享内存标识符和信号量集标识符。// 删除共享内存和信号量。// 初始化共享内存和信号量。
2023-07-08 11:40:38
25
原创 252525
int id;} User;User user;} TreeNode;} else {} else {free(root);free(root);if (root!= NULL) {if (root!= NULL) {User user;= NULL) {if (root!= NULL) {free(root);int choice;User user;do {
2023-07-07 14:50:02
14
1
原创 242424
/ 模拟保存到.csv文件。// 中序遍历二叉排序树,并按照用户名排序打印输出。// 这里使用一个简单的示例用户数据。// 模拟从.csv文件读取用户信息。// 保存用户信息到.csv文件。// 定义二叉排序树节点结构体。// 在二叉排序树中查找节点。// 插入节点到二叉排序树。// 创建二叉排序树节点。// 释放二叉排序树内存。// 定义用户结构体。
2023-07-07 14:41:51
28
1
原创 232323
/ 保存节点信息到.csv文件。// 从.csv文件加载节点信息。// 结构体定义:用户信息。// 插入节点到二叉排序树。// 中序遍历打印节点信息。// 释放二叉排序树节点。// 创建用户信息节点。
2023-07-07 12:02:18
23
1
原创 212121
printf("用户信息已保存到文件。printf("请输入新的用户ID: ");printf("请输入新的电话号码: ");printf("请输入新的用户名: ");printf("请输入新的密码: ");printf("请输入新的邮箱: ");printf("请输入要查找的用户名: ");printf("请输入要删除的用户名: ");printf("请输入要修改的用户名: ");printf("用户信息:\n");printf("请输入用户ID: ");printf("请输入电话号码: ");
2023-07-07 11:43:23
83
1
原创 202020
/ 去掉输入中的换行符。// 去掉输入中的换行符。// 去掉输入中的换行符。// 去掉输入中的换行符。// 去掉输入中的换行符。// 消费掉输入缓冲区中的换行符。
2023-07-07 11:25:53
22
1
原创 191919
/ 读取.csv文件中的用户信息并构建二叉排序树。// 中序遍历二叉排序树,并将节点信息保存到数组。// 将中文转换成拼音,按字母顺序比较。// 保存二叉排序树的节点信息到.csv文件。// 按照用户名首字母顺序写入文件。// 中序遍历并保存节点到数组。// 中序遍历二叉排序树并打印节点信息。// 查找二叉排序树中的最小节点。// 创建数组保存节点。//在二叉排序树中修改节点信息。// 定义二叉排序树的结构体。// 插入节点到二叉排序树中。// 在二叉排序树中查找节点。// 删除二叉排序树中的节点。
2023-07-07 11:16:04
59
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人