Treść przeznaczona dla osób powyżej 18 roku życia...
  • 39
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Niech ktoś mnie oświeci, bo chyba czegoś nie rozumiem. Wcześniej myślałem, że jeden wątek może działać tylko na jednym rdzeniu, ale odpalam sobie taki program i dostaję w pętli różne id rdzeni:

#include
#include
#include
#include
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@zwei: Ogólnie to wątek nie ma przypisanego konkretnie jakiegoś rdzenia, to jest zarządzane przez scheduler OS-a. Więc domyślnie jeden wątek będzie się wykonywał w danym momencie na jednym rdzeniu, ale na jakim to decyduje scheduler.

Przypisanie wątku czy procesu do konkretnego rdzenia/cpu nazywa się "CPU affinity". W Linuxie można to kontrolować poleceniem taskset
EDIT: formatowanie
  • Odpowiedz
Hej mirki spod tagu #mikrokontrolery i trochę #jezykc. Szukam jakiegoś dobrego darmowego kursu do nauki RTOS. Niby znalazłem jakieś kursy na google, ale wszystkie tylko powierzchownie tłumaczą temat i to przeważnie tylko używając mrugania diodami i uarta. Ktoś może ma jakiś pomysł czego mógłbym się zaczepić?
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Może ktoś mi podpowie z C. Mam 1000 stringów o tej samej długości i muszę wybrać przez input string 342 oraz 954, żeby zamienić ich zawartość miejscami.

Algorytm zamiany str1 z str2 jest taki:

for (i = 0; str1[i] != '\0'; i++)
{
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Zian: Jesteś pewien, że czegoś nie pomyliłeś? Mając 1000 tablic w stylu char str1[] = "abc" niestety nie jesteś w stanie jakoś dopisać numeru podczas gdy program działa i jeżeli użytkownik wprowadzi 2 liczby to bez tablicy się tam nie dostaniesz w rozsądny sposób (zrobienie 500 000 ifów nie jest rozsądnym rozwiązaniem).

Potrzebujesz przynajmniej użyć char *ptr[] = {str1, str2, str3, ..., str1000}. I wtedy robisz swapa bez problemu
  • Odpowiedz
Byłabym bardzo wdzięczna, gdyby ktoś mi zerknął na kod i pomógłby mi z funkcją write(), która teoretycznie powinna utworzyć kopię pliku (z tekstem), a nie tylko nowy plik. Niestety mogę tylko użyć write i read do wczytywania, przez co zadanie robi się problematyczne.
Link do pastebin: https://pastebin.com/JMzAhu4b

#jezykc #informatyka #ansic
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Iribell:
linia 63. tworzysz file descriptor (in), ale nie używasz go do niczego, prawdopodobnie chciałaś użyć któregoś z tablicy fd.
linia 65. nie sprawdzasz pliku, tylko porównujesz wartość stringa z jego nazwą do nulla, to zawsze będzie prawdziwe (coś jak 17 != 15), powinnaś sprawdzić czy fd jest poprawny (fd zwraca funkcja open)
linia 93. zapisujesz coś do przypadkowego fd (argument 1), nawet nie masz nic otwartego.
linia 99. to nie da żadnego
  • Odpowiedz
@elfo: Wiedziałam, że moje zadanie to bałagan, ale nie sądziłam, że aż taki. Chyba lepiej je będzie zrobić od początku. W każdym razie dzięki.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
Ogólnie sam #jezykc jest potrzebny, jest w miarę intuicyjny i po ogarnięciu paru mankamentów(wskaźników) jest nawet prosty.
Natomiast odrzuca mnie od niego ta obrzydliwa i nieprzyjemna składnia. Zawsze jak go dotykam to czuje się jakbym dotykał starego zakurzonego mechanizmu.
Niemniej jednak szanuje, bo stary a nadal często używany.
#programowanie #przemyslenia
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

obrzydliwa i nieprzyjemna składnia


@JakTamCoTam: to samo może powiedzieć o dowolnym języku każda osoba używającego każdego innego języka xD Kwestia przyzwyczajenia. 15 lat używam C i w życiu bym nie powiedział, że ma dziwną składnię - a wręcz przeciwnie.
  • Odpowiedz
#programowanie #jezykc Nie rozumiem, w jaki inny sposób miałbym uzupełnić tą tablicę żeby nie pojawiało mi sie ostrzeżenie: C6011 Dereferencing NULL pointer RCppcoordxLUT

RC_pp_coord_x_LUT = (float32*)malloc(RC_render_width__i * sizeof(float));
for (u_int32 ray_x = 0; ray_x < RC_render_width__i; ++ray_x)
{
RC_pp_coord_x_LUT[ray_x] = (float32)(ray_x << 1) * RC_render_width__1div__f - 1.0f;
}
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ZawzietyRobaczek warningi trzeba poprawiać i trzeba nauczyć się je rozumieć żeby wiedzieć skąd się biorą. Nie wiedziałem że VC ma taką rozbudowaną analizę kodu. Jednak Microsoft pewnie w ciul kasy traci przez te wszystkie bugi w swoim sofie więc poprawili kompilator i przebudowują soft.
  • Odpowiedz
Hej,
poszukuję programu do znajdywania podobnych(zduplikowanych) fragmentów kodu w C/C++ oraz Rust.
Kojarzycie jakieś darmowe narzędzie do tego?
Na internecie jest masa programów, ale póki co z tego co widzę to większość to jakieś badziewie.

#programowanie #cpp #jezykc #rustlang
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#programowanie #programowanie15k #jezykc

Czy można jakoś zoptymalizować poniższy warunek, tak zeby nie używać "if", czyli zastosować tzn. "branchless":

if (pp_wall_start > RC_walls_start) RC_walls_start = pp_wall_start;
Próbowałem w ten sposób, ale wolałbym bez mnożenia no i nie do końća mi działało:
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#jezykc #programowanie Cześć, jak sobie radzicie z kolejnością bitów (endiannes) na róznych platformach, jeśli Wasz kod ma być wspólny zarówno dla big i little endian? tylko #ifndef i warianty? Moze jakiś parametr w kompilatorze np. GCC.
Bo zapisałem plik binarnie na PC a potem za pomocą tego samego kodu chailem go otworzyć na zupelnie innej platformie i miałem wartosci z kosmosu, dopiero musiałem je odwrócić.. no
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ZawzietyRobaczek: rozwiązanie jest proste: nie pisz kodu, który wymaga dbania o endianess. Użyj gotowego formatu jak np. protobuf, luby jak chcesz bardziej hardkorowe/wydajniejsze rozwiązania to cap n proto lub sbe
  • Odpowiedz
@maad: jak serializujesz typy prymitywne to równie dobrze możesz użyc serializacji tekstowej, bo pojedyńczy prymityw nigdy nie będzie problemem
  • Odpowiedz
via Wykop Mobilny (Android)
  • 3
@ZawzietyRobaczek: chyba nie. Inna sprawa, że kod tego typu jest bardzo mocno optymalizowany przez kompilator, więc jak chcesz zwiększyć wydajność, to zaniechaj, chyba, że się na tym znasz
  • Odpowiedz