Durante le ricerche sull'argomento - strutture di dati prive di blocchi e di attesa - vedo una preoccupante quantità di brevetti relativi a quest'area. Ho studiato algoritmi di compressione per hobby anni fa e, a confronto, la situazione sembra peggio così difficile da immaginare.
Sfondo
Ho un progetto in corso che a questo stadio è personale / privato ma che alla fine è destinato a essere redditizio nei mercati occidentali (Europa, Stati Uniti, Australia, ecc.). Capisco che i brevetti sul software non sono un problema tanto in Eu, ma sicuramente negli Stati Uniti e per estensione in Aus fino a un certo grado se non altrettanto.
Il problema
Con qualsiasi processo computazionale ci sono unità base che si possono usare. Considererei a questo scopo che qualcosa come un array o una lista sarebbe un'unità fondamentale - ci sono già algoritmi e ampli ottimali; strutture ricercate e collaudate più a lungo di quanto ho vissuto, ma queste sono (per quanto ne so) non soggette a brevetti o uso condizionato. Forse non nel caso veramente estremo come reati (nel senso che non si tratta di un problema di copyright / royalty ma di crimini veri commessi ma sto divagando).
Immetti lock-free / wait-free (LFWF).
Potrei sbagliarmi, ma mi sembra che introdurre tali fondamentali unità algoritmiche alla metodologia di sicurezza del thread (qualsiasi) sia un miglioramento nel caso generale e probabilmente possa essere brevettato. Tuttavia, cosa succede se esiste un modo più semplice o più semplice per "migliorare" una struttura per l'elaborazione parallela? Non ci sarebbero algoritmi o strutture "banali" per l'elaborazione parallela?
La domanda
Fondamentalmente, a che punto un miglioramento di LFWF a qualcosa come una lista o mappa o vettore o coda, ecc., inizia a "risaltare" abbastanza da essere brevettabile o almeno "rischioso" da usare senza consultare un ufficio brevetti / avvocato?
Non pertinente ma apprezzato per considerazione - questo non ostacolerebbe gli sforzi di sviluppo in questo settore se la barra è troppo bassa per quello che è un miglioramento brevettabile di un concetto di libero utilizzo stabilito tramite LFWF?
Capisco che LFWF non sia di per sé un problema perché le operazioni stesse - le implementazioni delle funzioni prime - sono mal di testa per compilatori / hardware / fornitore che in genere un programmatore non sarebbe comunque coinvolto.
Un esempio
Più comunemente ho trovato il riferimento alle strutture e agli algoritmi con liste a collegamento singolo (SLL) brevettati esaurientemente - questa è effettivamente la situazione, non posso usare le mie idee SLL LFWF per paura di brevetti esistenti?
Ora, considerando qualcosa di semplice come SLL ha solo tanti modi in cui potrebbe essere implementato con miglioramenti LFWF, che tipo di implementazione mi sono limitato per evitare di creare qualcosa potenzialmente già brevettato? O non esiste tale limite e sono coperte solo le metodologie specifiche?
Per analogia, non si può brevettare la ruota ma si potrebbe brevettare un nuovo tipo di ruota che ha caratteristiche / vantaggi e / o svantaggi distinti. A che punto i primitivi algoritmici attraversano la linea dalla ruota alla "nuova idea" attraverso le implementazioni LFWF di questi?