这里需要一些帮助.
我想了解这段代码中发生了什么.
我正在尝试为函数内部创建tickets的TCP_t结构生成随机数ccreate.
问题是,每次执行此代码时,srand(time(NULL))它都会反复返回相同的"随机"数字序列,例如:
TID: 0 | TICKET : 103
TID: 1 | TICKET : 198
Run Code Online (Sandbox Code Playgroud)
所以我随着时间的推移将其播种,以生成真正随机的数字.
当我将种子放在newTicket函数内部时,它会在每次执行时带来不同的数字,但每个线程的数字都相同.以下是输出示例:
执行1:
TID: 0 | TICKET : 148
TID: 1 | TICKET : 148
Run Code Online (Sandbox Code Playgroud)
执行2:
TID: 0 | TICKET : 96
TID: 1 | TICKET : 96
Run Code Online (Sandbox Code Playgroud)
因此,经过一些研究,我发现我不应该在每次打电话时播种它,rand而只是在节目开始时播种一次.现在,在将种子放入main函数之后,它给了我分段错误,我没有IDEA为什么.
这可能是一个愚蠢的问题,但我真的想了解发生了什么.
不知怎的,种子搞砸了什么?我错过了什么吗?我应该以另一种方式生成随机数吗?
#include <ucontext.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define MAX_TICKET 255
#define STACK_SIZE 32000
typedef struct s_TCB …Run Code Online (Sandbox Code Playgroud)