i don't know why its running concurrently instead of parallel execution i am using the p-thread lib. in rust via unsafe wrapper
#Problem in custom thread implementation
109 messages · Page 1 of 1 (latest)
why is the method named swap...?
also please format your code before showing it to others
oh sorry
how do you determine that the execution is not parallel?
randmly
cause i saw the output
do you know what swap means?
yes what??
oh god
my mind
it must we spawn
lol
what about it?
my english
so like i ran the inner loop till 100 in both the thread
ok and then?
so the out out was like
Running target/debug/low_level
sus 0
sus 1
sus 2
sus 3
sus 4
sus 5
sus 6
sus 7
sus 8
sus 9
sus 10
sus 11
sus 12
Stan 0
Stan 1
sus 13
sus 14
sus 15
sus 16
sus 17
sus 18
Stan 2
Stan 3
Stan 4
Stan 5
Stan 6
Stan 7
Stan 8
sus 19
sus 20
sus 21
sus 22
sus 23
sus 24
sus 25
Stan 9
Stan 10
Stan 11
sus 26
sus 27
Stan 12
Stan 13
Stan 14
sus 28
sus 29
Stan 15
Stan 16 ... ```
everytime i ran the code it was exactly in same pattern
random assignment of thread and execution
and why do you think that it's not happening now?
wait for a sec please
I doubt the output was exactly the same
.
yes it was exactly the same
oh god no
it just means that if your operating system supports parallelism then pthreads can use that
ah i see
so should i open my computer ???and show you.??
??
execute it again and paste here
sorry i just wake up so my brain is not "braining"
also there is literally no way for you to distinguish concurrency and parallelism with pre-emptive threads
you could create 2 cpu intensive tasks and then look at the process CPU usage, whether they are using multiple cores
i am using wsl 2 ubuntu distro i guess it won't create any issue.??
that wouldn't change a lot
unless you somehow specified 1 core in wsl2 settings
which you can do actually
oh i see
sus 0
sus 1
sus 2
sus 3
sus 4
sus 5
sus 6
sus 7
sus 8
sus 9
sus 10
sus 11
sus 12
sus 13
sus 14
sus 15
sus 16
sus 17
sus 18
sus 19
sus 20
sus 21
sus 22
sus 23
sus 24
sus 25
sus 26
sus 27
sus 28
sus 29
sus 30
sus 31
sus 32
sus 33
sus 34
sus 35
sus 36
sus 37
sus 38
sus 39
sus 40
sus 41
sus 42
sus 43
sus 44
sus 45
sus 46
sus 47
sus 48
sus 49
sus 50
sus 51
sus 52
sus 53
sus 54
sus 55
sus 56
sus 57
sus 58
sus 59
sus 60
sus 61
sus 62
sus 63
sus 64
sus 65
sus 66
sus 67
sus 68
sus 69
sus 70
sus 71
sus 72
sus 73
sus 74
sus 75
sus 76
sus 77
sus 78
sus 79
sus 80
sus 81
sus 82
sus 83
sus 84
sus 85
sus 86
sus 87
sus 88
sus 89
sus 90
sus 91
sus 92
sus 93
sus 94
sus 95
sus 96
sus 97
sus 98
sus 99
Thread started with id570
Stan 0
Stan 1
Stan 2
Stan 3
Stan 4
Stan 5
Stan 6
Stan 7
Stan 8
Stan 9
Stan 10
Stan 11
Stan 12
Stan 13
Stan 14
Stan 15
Stan 16
Stan 17
Stan 18
Stan 19
Stan 20
Stan 21
Stan 22
Stan 23
Stan 24
Stan 25
Stan 26
Stan 27
Stan 28
Stan 29
Stan 30
Stan 31
Stan 32
Stan 33
Stan 34
Stan 35
Stan 36
Stan 37
Stan 38
Stan 39
Stan 40
Stan 41
Stan 42
Stan 43
Stan 44
Stan 45
Stan 46
Stan 47
Stan 48
Stan 49
Stan 50
Stan 51
Stan 52
Stan 53
Stan 54
Stan 55
Stan 56
Stan 57
Stan 58
Stan 59
Stan 60
Stan 61
Stan 62
Stan 63
Stan 64
Stan 65
Stan 66
Stan 67
Stan 68
Stan 69
Stan 70
Stan 71
Stan 72
Stan 73
Stan 74
Stan 75
Stan 76
Stan 77
Stan 78
Stan 79
Stan 80
Stan 81
Stan 82
Stan 83
Stan 84
Stan 85
Stan 86
Stan 87
Stan 88
Stan 89
Stan 90
Stan 91
Stan 92
Stan 93
Stan 94
Stan 95
Stan 96
Stan 97
Stan 98
Stan 99
mohda@ayan:~/low_level$ ```
ok now you did something different
what did you change?
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.01s
Running `target/debug/low_level`
Thread started with id218
sus 0
sus 1
sus 2
sus 3
sus 4
sus 5
sus 6
sus 7
sus 8
sus 9
sus 10
sus 11
sus 12
sus 13
sus 14
sus 15
sus 16
sus 17
sus 18
sus 19
sus 20
sus 21
sus 22
sus 23
Thread started with id347
sus 24
sus 25
sus 26
sus 27
sus 28
sus 29
sus 30
sus 31
sus 32
sus 33
sus 34
sus 35
sus 36
sus 37
sus 38
sus 39
sus 40
sus 41
sus 42
sus 43
sus 44
sus 45
sus 46
sus 47
sus 48
sus 49
sus 50
sus 51
sus 52
sus 53
sus 54
sus 55
sus 56
sus 57
sus 58
sus 59
sus 60
sus 61
sus 62
sus 63
sus 64
sus 65
sus 66
sus 67
sus 68
sus 69
sus 70
sus 71
sus 72
sus 73
sus 74
sus 75
sus 76
sus 77
sus 78
sus 79
sus 80
Stan 0
Stan 1
Stan 2
Stan 3
Stan 4
Stan 5
Stan 6
Stan 7
Stan 8
Stan 9
Stan 10
sus 81
sus 82
sus 83
sus 84
sus 85
sus 86
sus 87
sus 88
sus 89
sus 90
sus 91
sus 92
sus 93
sus 94
sus 95
sus 96
sus 97
sus 98
sus 99
Stan 11
Stan 12
Stan 13
Stan 14
Stan 15
Stan 16
Stan 17
Stan 18
Stan 19
Stan 20
Stan 21
Stan 22
Stan 23
Stan 24
Stan 25
Stan 26
Stan 27
Stan 28
Stan 29
Stan 30
Stan 31
Stan 32
Stan 33
Stan 34
Stan 35
Stan 36
Stan 37
Stan 38
Stan 39
Stan 40
Stan 41
Stan 42
Stan 43
Stan 44
Stan 45
Stan 46
Stan 47
Stan 48
Stan 49
Stan 50
Stan 51
Stan 52
Stan 53
Stan 54
Stan 55
Stan 56
Stan 57
Stan 58
Stan 59
Stan 60
Stan 61
Stan 62
Stan 63
Stan 64
Stan 65
Stan 66
Stan 67
Stan 68
Stan 69
Stan 70
Stan 71
Stan 72
Stan 73
Stan 74
Stan 75
Stan 76
Stan 77
Stan 78
Stan 79
Stan 80
Stan 81
Stan 82
Stan 83
Stan 84
Stan 85
Stan 86
Stan 87
Stan 88
Stan 89
Stan 90
Stan 91
Stan 92
Stan 93
Stan 94
Stan 95
Stan 96
Stan 97
Stan 98
Stan 99
look at this
now i g its like the first one
I'm looking, seems correct
what kind of output would convince you of the threads being parallel?
wait leme show ...
D:\.jdk\bin\java.exe "-javaagent:D:\IntelliJ IDEA Community Edition 2024.1.3\lib\idea_rt.jar=57447:D:\IntelliJ IDEA Community Edition 2024.1.3\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath "D:\projects\Java 8 stream Api\out\production\ServerSockerProgramming" Repr.main
pan 0
pan 1
pan 2
pan 3
pan 4
pan 5
pan 6
pan 7
pan 8
pan 9
cake 0
pan 10
pan 11
pan 12
cake 1
pan 13
pan 14
pan 15
pan 16
pan 17
pan 18
pan 19
pan 20
pan 21
cake 2
cake 3
cake 4
cake 5
cake 6
cake 7
cake 8
cake 9
cake 10
cake 11
cake 12
cake 13
cake 14
cake 15
cake 16
cake 17
cake 18
cake 19
cake 20
cake 21
cake 22
cake 23
cake 24
cake 25
cake 26
cake 27
cake 28
cake 29
cake 30
cake 31
cake 32
pan 22
cake 33
cake 34
cake 35
cake 36
cake 37
cake 38
cake 39
cake 40
cake 41
cake 42
cake 43
cake 44
cake 45
cake 46
cake 47
cake 48
cake 49
cake 50
cake 51
cake 52
cake 53
cake 54
cake 55
cake 56
cake 57
cake 58
cake 59
cake 60
cake 61
cake 62
cake 63
cake 64
cake 65
cake 66
cake 67
cake 68
cake 69
cake 70
cake 71
cake 72
cake 73
cake 74
cake 75
cake 76
cake 77
cake 78
cake 79
cake 80
cake 81
pan 23
pan 24
pan 25
pan 26
pan 27
pan 28
pan 29
pan 30
pan 31
pan 32
pan 33
pan 34
pan 35
pan 36
pan 37
pan 38
pan 39
pan 40
pan 41
pan 42
pan 43
pan 44
pan 45
pan 46
pan 47
pan 48
pan 49
pan 50
pan 51
pan 52
pan 53
pan 54
pan 55
pan 56
pan 57
pan 58
pan 59
pan 60
pan 61
pan 62
pan 63
pan 64
pan 65
pan 66
pan 67
pan 68
pan 69
pan 70
pan 71
pan 72
pan 73
pan 74
pan 75
pan 76
pan 77
pan 78
pan 79
cake 82
cake 83
cake 84
cake 85
cake 86
cake 87
cake 88
cake 89
cake 90
cake 91
cake 92
cake 93
cake 94
cake 95
cake 96
cake 97
cake 98
cake 99
pan 80
pan 81
pan 82
pan 83
pan 84
pan 85
pan 86
pan 87
pan 88
pan 89
pan 90
pan 91
pan 92
pan 93
pan 94
pan 95
pan 96
pan 97
pan 98
pan 99
Process finished with exit code 0
its a java based example
each time i run i gets a different pattern
pan 0
pan 1
cake 0
cake 1
cake 2
cake 3
cake 4
cake 5
pan 2
cake 6
pan 3
pan 4
cake 7
pan 5
cake 8
pan 6
pan 7
pan 8
pan 9
pan 10
cake 9
pan 11```
btw ive changed the function name in code
yeah in rust you also get a different pattern
yup
i think i need to look for pthread specifications
what shoild i do
in rust it's the same thing
its not that same also exactly same exection each time
every time you run you get a random distribution
no it's not
you showed me at least 3 different ones with the rust code
it might be that a rust program is faster, so one thread can do more at once before the operatin system switches to another one
warning: `low_level` (bin "low_level") generated 16 warnings (run `cargo fix --bin "low_level"` to apply 2 suggestions) Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.93s Running `target/debug/low_level` sus 0 stan 0 sus 1 sus 2 sus 3 sus 4 sus 5 sus 6 sus 7 stan 1 stan 2 stan 3 stan 4 stan 5 stan 6 stan 7 stan 8 stan 9 stan 10 stan 11 stan 12 stan 13 stan 14 stan 15 stan 16 stan 17 stan 18 sus 8 sus 9 stan 19 stan 20 stan 21 sus 10 sus 11 stan 22 stan 23 stan 24 stan 25 stan 26 stan 27 stan 28 stan 29 stan 30 stan 31 stan 32 stan 33 stan 34 stan 35 stan 36 stan 37 stan 38 stan 39 stan 40 stan 41 stan 42 stan 43 sus 12 sus 13 stan 44 stan 45 stan 46 stan 47 stan 48 stan 49 stan 50 stan 51 stan 52 stan 53 stan 54 stan 55 stan 56 stan 57 sus 14 sus 15 sus 16 sus 17 sus 18 stan 58 stan 59 stan 60 stan 61 stan 62 stan 63 stan 64 stan 65 stan 66 stan 67 stan 68 stan 69 stan 70 stan 71 sus 19 sus 20 sus 21 stan 72 stan 73 stan 74 stan 75 stan 76 sus 22 sus 23 sus 24 sus 25 sus 26 sus 27 sus 28 sus 29 sus 30 sus 31 stan 77 stan 78 stan 79 stan 80 stan 81 stan 82 stan 83 stan 84 stan 85 stan 86 stan 87 stan 88 stan 89 stan 90 stan 91 stan 92 stan 93 stan 94 stan 95 sus 32 sus 33 sus 34 sus 35 sus 36 sus 37 sus 38 sus 39 sus 40 sus 41 sus 42 sus 43 sus 44 sus 45 sus 46 sus 47 sus 48 sus 49 sus 50 sus 51 sus 52 sus 53 sus 54 sus 55 sus 56 sus 57 sus 58 sus 59 sus 60 sus 61 sus 62 sus 63 sus 64 sus 65 sus 66 sus 67 sus 68 sus 69 sus 70 sus 71 sus 72 sus 73 sus 74 sus 75 sus 76 sus 77 sus 78 sus 79 sus 80 sus 81 sus 82 sus 83 sus 84 sus 85 sus 86 sus 87 sus 88 sus 89 sus 90 sus 91 sus 92 sus 93 sus 94 sus 95 sus 96 sus 97 sus 98 sus 99 stan 96 stan 97 stan 98 stan 99 mohda@ayan:~/low_level$
its now a rust based code
via thread::spawn()
```warning: low_level (bin "low_level") generated 3 warnings (run cargo fix --bin "low_level" to apply 1 suggestion)
Finished dev profile [unoptimized + debuginfo] target(s) in 1.01s
Running target/debug/low_level
Thread started with id409
sus 0
sus 1
sus 2
sus 3
sus 4
sus 5
sus 6
sus 7
sus 8
sus 9
sus 10
sus 11
sus 12
sus 13
sus 14
sus 15
sus 16
sus 17
sus 18
sus 19
sus 20
sus 21
sus 22
sus 23
sus 24
sus 25
sus 26
sus 27
sus 28
sus 29
sus 30
sus 31
sus 32
sus 33
sus 34
sus 35
sus 36
sus 37
sus 38
sus 39
sus 40
sus 41
sus 42
sus 43
sus 44
sus 45
sus 46
sus 47
sus 48
sus 49
sus 50
sus 51
sus 52
sus 53
sus 54
sus 55
sus 56
sus 57
sus 58
sus 59
sus 60
sus 61
sus 62
sus 63
sus 64
sus 65
sus 66
sus 67
sus 68
sus 69
sus 70
sus 71
sus 72
sus 73
sus 74
sus 75
sus 76
sus 77
sus 78
sus 79
sus 80
sus 81
sus 82
sus 83
sus 84
sus 85
sus 86
sus 87
sus 88
sus 89
sus 90
sus 91
sus 92
sus 93
sus 94
sus 95
sus 96
sus 97
sus 98
sus 99
Thread started with id924
Stan 0
Stan 1
Stan 2
Stan 3
Stan 4
Stan 5
Stan 6
Stan 7
Stan 8
Stan 9
Stan 10
Stan 11
Stan 12
Stan 13
Stan 14
Stan 15
Stan 16
Stan 17
Stan 18
Stan 19
Stan 20
Stan 21
Stan 22
Stan 23
Stan 24
Stan 25
Stan 26
Stan 27
Stan 28
Stan 29
Stan 30
Stan 31
Stan 32
Stan 33
Stan 34
Stan 35
Stan 36
Stan 37
Stan 38
Stan 39
Stan 40
Stan 41
Stan 42
Stan 43
Stan 44
Stan 45
Stan 46
Stan 47
Stan 48
Stan 49
Stan 50
Stan 51
Stan 52
Stan 53
Stan 54
Stan 55
Stan 56
Stan 57
Stan 58
Stan 59
Stan 60
Stan 61
Stan 62
Stan 63
Stan 64
Stan 65
Stan 66
Stan 67
Stan 68
Stan 69
Stan 70
Stan 71
Stan 72
Stan 73
Stan 74
Stan 75
Stan 76
Stan 77
Stan 78
Stan 79
Stan 80
Stan 81
Stan 82
Stan 83
Stan 84
Stan 85
Stan 86
Stan 87
Stan 88
Stan 89
Stan 90
well, thread::spawn literally uses pthread_create too
iguess there is some fault in my code
thats not allowing it to run parallely
ok, one thing is that ```rs
let mut num:Vec<i32> = (1..1000).collect();
let mut rng = rand::rng();
num.shuffle(&mut rng);
let mut p:pthread_t =*num.choose(&mut rng).unwrap() as u64;
because you're running in debug mode
ig too
also this code is really redundant
shuffle and choose together don't do anything extra that only one of them isn't doing
shuffled[0] and (0..1000).choose() would both give you a random number
actually rng::gen_range(0..1000) would be 100x faster and do the same thing too
Thread started with id248
sus 0
sus 1
sus 2
sus 3
sus 4
sus 5
sus 6
sus 7
sus 8
sus 9
sus 10
sus 11
sus 12
sus 13
sus 14
sus 15
sus 16
sus 17
sus 18
sus 19
sus 20
sus 21
sus 22
sus 23
sus 24
sus 25
sus 26
sus 27
sus 28
sus 29
sus 30
sus 31
sus 32
sus 33
Stan 0
Stan 1
Stan 2
Stan 3
Stan 4
Stan 5
Stan 6
Stan 7
Stan 8
Stan 9
Stan 10
Stan 11
sus 34
sus 35
sus 36
sus 37
sus 38
sus 39
sus 40
sus 41
sus 42
sus 43
sus 44
sus 45
sus 46
sus 47
sus 48
sus 49
sus 50
sus 51
sus 52
sus 53
sus 54
sus 55
sus 56
sus 57
sus 58
yeah it do make some change
still its not as same as the orignal thread::swap()
now i am asking for the id with the
});```
what do you mean it's not the same?
if you observe the output of it its more random
hm
but it should be a bit close